本文是docker入门指南第五篇:使用Docker搭建jekyll博客,在本篇文章是docker实战,在文章中,我将介绍如何使用docker容器来搭建jekyll博客,并且介绍了如何备份docker容器。使用Docker可以构建jekyll镜像以及apache镜像,这样可以通过apache镜像运行Docker容器,从而浏览jekyll博客,本文的目标就是使用Docker搭建一个在本地可以浏览的jekyll博客。
需要进行的步骤:首先需要构建jekyll镜像,该镜像包含了jekyll博客运行所必须的ruby环境,随后我们需要构建一个apache镜像,该镜像通过Apache Web服务器来让jekyll工作起来。
一、构建jekyll镜像
1、编写Dockerfile文件
首先创建一个目录来存放Dockerfile文件,并且在该目录下编写Dockerfile文件。
mkdir jekyll cd jekyll nano Dockerfile
在Dockerfile中添加以下代码:
FROM ubuntu:latest MAINTAINER li xinxing "lxx19950227@163.com" ENV REFRESHED_AT 2016-7-5 RUN apt-get -yqq update RUN apt-get -yqq install ruby ruby-dev make nodejs gcc RUN gem sources --remove https://rubygems.org/ RUN gem sources -a https://ruby.taobao.org RUN gem install --no-rdoc --no-ri jekyll VOLUME /data VOLUME /var/www/html WORKDIR /data ENTRYPOINT ["jekyll","build","--destination=/var/www/html" ]
我们安装了jekyll运行所必须的ruby和基础环境,并且使用
VOLUME /data VOLUME /var/www/html
指令来创建了/data 和/var/www/html两个卷,分别用来存放jekyll 网站源文件和编译后生成的文件。最后使用jekyll网站源文件生成编译后的文件。
2、构建jekyll镜像
根据刚才编写的Dockerfile文件,可以构建jekyll镜像,构建指令为:
sudo build -t xinxingli/jekyll .
这样就构建了jekyll新镜像。
二、构建apache镜像
1、编写Dockerfile文件
构建jekyll镜像完成后,还需要构建网站运行必须的apache镜像,首先我们需要新建目录,然后编写Dockerfile文件。
mkdir apache cd apache nano Dockerfile
在apache目录下的Dockerfile文件中添加以下代码:
FROM ubuntu:latest MAINTAINER xinxing li <lxx19950227@163.com> ENV REFRESHED_AT 2015-7-5 17:38 RUN apt-get -yqq update RUN apt-get -yqq install apache2 VOLUME {"/var/wwww/html"} WORKDIR /var/www/html ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_PID_FILE /var/run/apache2.pid ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR EXPOSE 80 ENTRYPOINT ["/usr/sbin/apache2"]
我们使用了ubuntu镜像,安装了apache web 服务器,然后开启了容器的80端口。
2、构建apache镜像
在编写完Dockerfile文件中,同样需要构建apache镜像,构建指令为:
sudo docker build -t xinxingli/apache .
这样就成功的构建了运行jekyll博客需要的apache镜像。
三、启动jekyll容器
jekyll和apache镜像构建完成后,可以启动jekyll容器,在启动之前,首先要将jekyll博客网站源代码下载到本地,使用以下命令下载:
cd git clone https://github.com/xinxingli/new_jekyll.git
可以看到,new_jekyll目录下包含了jekyll博客初始代码,现在可以使用这个目录下的代码启动容器:
sudo docker run -v /home/li/new_jekyll:/data/ --name lxx1_blog xinxingli/jekyll
输出以下信息说明jekyll容器启动成功:
Configuration file: /data/_config.yml Source: /data Destination: /var/www/html Incremental build: disabled. Enable with --incremental Generating... done in 0.249 seconds. Auto-regeneration: disabled. Use --watch to enable.
现在已经启动了jekyll容器,并且将/home/li/new_jekyll目录作为卷挂载在/data目录,jekyll编译后的文件存放目录为/var/www/html,为让apache使用这个目录,我们通过以下命令启动apache容器,让他使用jekyll容器里以及编译好的网站。
$ sudo docker run -d -P --volumes-from lxx1_blog xinxingli/apache 0b8f9ef200dbd0319be11d1d4a092e3165310c7fac0e552ae405a28b35891332
这样就会返回一个构建成功后的容器id,该apache网站使用了jekyll容器中的所有卷,包括网站编译后的目录。
要想在浏览器中访问构建成功的jekyll博客,则需要知道apache容器将80端口映射到了宿主主机的那个端口上,使用docker port命令可以查看。
$ sudo docker port 0b8f 80/tcp -> 0.0.0.0:32768
现在在浏览器中输入 http://宿主主机的ip地址:32768 即可查看新搭建的jekyll博客。
四、备份jekyll
jekyll使用了卷来存储数据,当使用该卷的最后一个容器删除时,该卷的数据将会丢失,所以我们需要备份jekyll博客的数据,防止丢失,使用以下命令备份/var/www/html卷。
sudo docker run --rm --volumes-from lxx1_blog -v $(pwd):/backup ubuntu tar cvf /backup/lxx1_blog_backup.tar /var/www/html
该命令新建了一个临时容器用于备份卷中的数据,数据备份到当前目录下,备份完成后容器会删除。
原创文章,转载请注明: 转载自科技爱好者博客
本文链接地址: Docker 入门指南(五):使用Docker搭建jekyll博客 (https://www.tujing.site/1973)
如果博客对您有帮助,请给我 赞助