使用Docker构建Jekyll框架网站
使用Docker构建Jekyll框架网站
使用dockerfile构建apache + jekyll
目录
Jekyll基础镜像
mkdir jekyll
cd jekyll
vi Dockerfile
其中Dockerfile内容修改文件内容为:
FROM ubuntu
MAINTAINER hongyang liu 1664698982@qq.com
ENV REFRESHED_AT 2019-11-17
RUN apt-get -yqq update
RUN apt-get -yqq install ruby ruby-dev make nodejs
RUN gem install --no-rdoc --no-ri jekyll
VOLUME /data
VOLUME /var/www/html
WORKDIR /data
ENTRYPOINT ["jekyll","build","--destination=/var/www/html"]
构建成功后结果如下:

/data,用来存放网站源代码
/var/www/html/,用来存放编译后的Jekyll网站码
镜像基于Ubuntu 18.04,并且安装了Ruby和用于支持Jekyll的包。
然后使用VOLUME指令创建了两个卷
最后一句命令的意思就是每次启动的时候就将/data下的源文件编译成可发布的网站内容,并放在/var/www/html中供下面的apache使用
构建Jekyll基础镜像
docker build -t taiyangyixi2/jekyll .
Apache镜像
创建Apache Dockerfile
mkdir apache
cd apache
vi Dockerfile
Dockerfile内容
FROM ubuntu:14.04
MAINTAINER hongyang liu 1664698982@qq.com
ENV REFRESHED_AT 2019-11-17
RUN apt-get -yqq update
RUN apt-get -yqq install apache2
VOLUME ["/var/www/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"]
CMD ["-D","FOREGROUND"]
Dockerfile构建了一个镜像,
然后使用VOLUME指令创建一个卷,
即/var/www/html/,用来存放编译后的Jekyll网站,然后将/var/www/html设置为工作目录
使用ENV设置必要的环境变量,创建了必要的目录
并设置了EXPOSE公开了80端口。
最后指定了ENTRYPOINT和CMD指令组合来在容器启动时默认运行Apache.
构建Jekyll Apache镜像
docker build -t taiyangyixi2/apache .
启动Jekyll网站
现在有了如下两个镜像
- Jekyll:安装了Ruby及其他必备软件包的Jekyll镜像
- Apache:通过Apache Web服务器来让Jekyll网站工作起来的镜像
下载博客源代码
cd ~
git clone https://github.com/jamtur01/james_blog.git
在这个目录下可以看到一个启用了Twitter Bootstrap的最基础的Jekyll博客。如果你也想使用这个博客,可以修改_config.yml文件和主题,以符合你的要求
docker run -v /home/james_blog:/data/ --name james_blog taiyangyixi2/jekyll
运行结果

启动了名为james_blog的新容器,
把本地的james_blog目录作为/data/卷挂在容器汇中。
容器已经拿到网站的源代码,并将其构建到已经编译的网站,存放到/var/www/html目录
创建Apache容器
docker run -d -P --volumes-from james_blog taiyangyixi/apache
{}--volumes-from把指定容器里的所有卷都加入新创建的容器里
Apache容器可以访问之前创建的james_blog容器里的/var/www/html卷中存放的编译后的Jekyll网站。即便james_blog容器没有运行,Apache容器也可以访问这个卷。不过,容器必须存在,如果用docker rm命令删除了james_blog容器,那么这个卷和卷里的内容也就不存在了。
查看Apache容器端口
docker port 30d486b77899 80
在Docker宿主机上浏览该网站:

更新Jekyll网站
cd ~
vi james_blog/_config.yml
将title域修改为James' Dynamic Docker-driven Blog
更新博客网站
docker start james_blog
查看容器日志
docker logs james_blog
使用Docker构建Jekyll框架网站的更多相关文章
- Docker学习6:使用docker构建Jekyll服务和java服务
写在前面 ## 文章Dockerfile中涉及apt-get 等操作需更换镜像 在Dockerfile中添加下列 Dockerfile源码,见下面作者githubhttps://github.com/ ...
- Docker构建镜像过于缓慢解决-----Docker构建服务之部署和备份jekyll网站
参考原文链接:https://www.jianshu.com/p/e6b7e68f2ba7 来自<第一本Docker书>,我觉得很有趣,就记录一下 准备国内ubuntu镜像 每次构建Ubu ...
- docker实战——构建Jekyll
构建第一个应用 要构建的第一个应用是Jekyll框架的自定义网站.我们会构建一下两个镜像. 一个镜像安装Jekyll以及其他用于构建Jekyll网站的必要的软件包. 一个镜像通过Apache来让Jek ...
- 【docker构建】基于docker构建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- selenium 结合 docker 构建分布式测试环境 (初学者视角)
前言:随着自动化测试越学越深,深深觉得有太多的东西需要总结. 1.记录下学习中遇到的坑,当做学习笔记.2.有前人路过看到文章中比较落后的做法,请务必一定要指教.(因为是初学者视角,很多东西只是走通而已 ...
- Skeljs – 用于构建响应式网站的前端开发框架
skelJS 是一个轻量级的前端框架,用于构建响应式站点和应用程序.让设计人员和开发人员可能够使用四个强大的组件:CSS 网格系统,响应式处理程序,CSS 的快捷方式和插件系统. 您可能感兴趣的相关文 ...
- 构建ASP.NET网站十大必备工具(2)
正常运行时间 当一个网站发布以后,你肯定希望你的网站不会遇到任何问题,一直处在正常运行状态之中.现在,我使用下面这些工具来监控“Superexpert.com”网站,确保它一直处在正常运行状态之中. ...
- 构建ASP.NET网站十大必备工具(1)
最近使用ASP.NET为公司构建了一个简单的公共网站(该网站的地址:http://superexpert.com/).在这个过程中,我们使用了数量很多的免费工具,如果把构建ASP.NET网站的必备工具 ...
- selenium结合docker构建分布式测试环境
selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...
随机推荐
- 2019-6-15-WPF-触摸到事件
原文:2019-6-15-WPF-触摸到事件 title author date CreateTime categories WPF 触摸到事件 lindexi 2019-06-15 08:58:54 ...
- windows小乌龟和git使用
一.安装git for windows 首先下载git for windows客户端http://msysgit.github.io/ 安装过程没什么特别的,不停next就ok了 图太多就不继 ...
- Linux用户和权限——管理文件权限的命令
Linux用户和权限——管理文件权限的命令 摘要:本文主要学习了Linux中修改文件权限的命令. chown命令 chown命令,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件( ...
- Java生鲜电商平台-电商促销业务分析设计与系统架构
Java生鲜电商平台-电商促销业务分析设计与系统架构 说明:Java开源生鲜电商平台-电商促销业务分析设计与系统架构,列举的是常见的促销场景与源代码下载 左侧为享受促销的资格,常见为这三种: 首单 大 ...
- vue实现word,pdf文件的导出功能
vue实现word或pdf文档导出的功能,我的项目是:后端返回一个文档流(下图),然后前端对文档流做处理进行下载,代码如下: import axios from 'axios'; axios.get( ...
- updataStateByKey算子的使用
updataStateByKeyApp.scala import org.apache.spark.SparkConf import org.apache.spark.streaming.{Secon ...
- Linux Tools 之 iostat 工具总结
iostat是Linux中被用来监控系统的I/O设备活动情况的工具,是input/output statistics的缩写.它可以生成三种类型的报告: CPU利用率报告 设备利用率报告 网络文件系统报 ...
- mysql主从配置步骤
主服务器配置: 1)登陆MySQL数据库 mysql>mysql -uroot -p123 2)给从服务器设置授权用户 mysql>grant all slave on *.* to us ...
- JS高阶---函数
[问题] [主体] 1.什么是函数? ①实现特定功能 ②多条语句的封装体 ③可以重复执行的代码块 2.为什么用函数? 提高代码的复用性,提升效率 3.如何定义函数? ①函数声明定义 ②函数表达式定义③ ...
- 每天一套题打卡|河南省第九届ACM/ICPC
A 表达式求值 表达式求值:可以用递归求解,也可以用栈模拟,考过多次. 类似题目:NYOJ305,NYOJ35 用栈模拟做法: #include <stdio.h> #include &l ...