科技爱好者博客

Docker 入门指南(五):使用Docker搭建jekyll博客

本文是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使用了卷来存储数据,当使用该卷的最后一个容器删除时,该卷的数据将会丢失,所以我们需要备份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)

如果博客对您有帮助,请给我 赞助


退出移动版