从安装换源到宿主机站点目录拷贝到web服务器容器。
下载安装以及换源
额外的配置镜像源
- https://docker.mirrors.ustc.edu.cn
- https://registry.docker-cn.com
1 |
|
实验🧪
在本身项目相关教程模糊或是配置繁琐,我们始终在搜寻适合我们的教程,又被这些繁琐的教程带了节奏,偏偏各种报错,连自己都不知道自己在配置什么了…一开始在急于求成完成项目的心境下还是真的太累了…
而且他们都是根据自己特例所进行的繁杂操作,不具有普众性。
因此,我们要极其清楚自己的目的:
- 文档在表达了哪些过程?过程是否存在模糊?
- 冗余淀长的配置是否合理?在对比同类型文章的情况下
- 在大方向上,自己要分几步走?
sequenceDiagram
dockerfile->image:build
image->container:run
container->image:commit
开始 »>
安装及使用ubuntu镜像
1 |
|
安装完成之后,我们退出重新看一遍发现:⚠️每次运行一次镜像都会生成新的初始环境的容器
情景1,临时测试删除容器docker run -it --rm ubuntu
情景2,由上发现此现象,所以我们需要指定容器运行。☑️
1 |
|
至此Jekyll环境安装完成✅
可能刚好会遇见
不同平台的Jekyll产品安装方式以及迁移问题,还有一系列的相关警告
不同平台的安装的注意项
- 首先你得有一个可靠的网络环境——镜像源:RubyGems - Ruby China
- 官方对不同平台安装方式的额外说明:Jekyll on Ubuntu
- 额外的编译包以及组件:lxx1-ubuntu下安装Jekyll博客
- 防漏补缺 ruby-full:litifeng-ubuntu16.04安装jekyll 3.3.1
重装Jekyll for Ubuntu
gem与apt-get的区别,直白来说:如果管理或安装相应的ruby组件就用gem,经测试apt-get来安装jekyll存在一定的功能缺陷即使用异常,组件安装不全。所以在安装完ruby后使用gem进行安装Jekyll。
1 |
|
将文件复制到其他平台上的问题
直接用docker cp
复制博客目录到容器里,报错信息如下所示,看起来不对劲。
1 |
|
删除了Gemfile,bundle init && bundle install
效果也是不理想,“ the theme could not be found. (Jekyll::Errors::MissingDependencyException)”,于是在StackOverflow上找到解决方案。
stackoverflow-Jekyll theme could not be found
So, in short, simply follow the steps below:
- Add the theme-gem to your
Gemfile
- add the theme to your
_config.yml
(correctly done already..)- Run:
bundle install
(just to make sure Bundler is able to use it)- Run:
bundle exec jekyll serve
这也是后来才知道,我的主题是git clone的,使用_config.yml生效,Gemfile却没有添加相关主题;警告方面,看了下 warning: already initialized constant APP_PATH #40518的讨论,如下图警告其实也算正常的。
1 |
|
其实到整理已经可以正常使用Jekyll及主题了。
宿主机访问问题
一开始看些入门教程我还不知道容器还有其相关的网络模式,看了脚本之家-Docker 网络模式(四种)详细介绍,docker run -it --net=host
,宿主机上输入localhost:4000,在测试之后还是不行…
最后,看来还是得上apache,将_site挂载到apache上部署访问,https://hub.docker.com/ 可在此官网搜寻apache docker镜像下载。虽然这么做成本高,却也是了解docker及web服务器使用很好的用例。
通过docker中 运行httpd文章的流程,这里以Windows为例:
1 |
|
⚠️有关于“docker cp requires exactly 2 arguments”多半是字符写错了。另外,运行web服务器,也发现新的过程原由:为什么jekyll为要在 _config.yml 的permalink项追加.html
的原因。
Docker 安装 Apache中挂载方式过于麻烦,面对我们静态博客这种小型项目实在过于麻烦,还不如docker cp简单🤣。