通过Docker搭建Hexo博客
1.创建项目文件夹
创建博客的工作
1 | mkdir -p ~/Hexo && cd ~/Hexo |
2.配置 Dockerfile
1 | # 基础镜像 |
然后构建镜像(和Dockerfile
同目录下):
1 | docker build -t hexo:latest . |
Docker 的 BuildKit 可以加速构建过程并启用更多的优化选项,在构建镜像时启用 BuildKit:
1 | DOCKER_BUILDKIT=1 docker build -t hexo:latest . |
3.更新镜像
要在已经构建的基础镜像更新镜像,可以使用以下两种方法:
3.1 方法一:更新现有 Dockerfile 并重建镜像
更新Dockerfile
,然后重新构建镜像。
3.2 方法二:从已有镜像启动容器并手动添加 Hexo
- 启动一个容器
从已有的基础镜像启动一个交互式容器:
1 | docker run -it hexo:latest /bin/bash |
在容器内进行操作
提交容器为新镜像
退出容器(exit
命令),然后提交容器为新镜像:
1 | docker commit <container_id> hexo:with-hexo |
with-hexo
是镜像标签,可以自定义。这里的 <container_id>
是刚刚启动的容器的 ID。可以使用 docker ps -a
命令找到它。
注意: 如果要把挂载的宿主机的文件提交到镜像里,需要提前做一个cp
操作,即通过docker cp
把宿主计内的文件复制到容器内,然后再提交。
4.推送与备份镜像
4.1 推送镜像到 Docker Hub
- 登录 Docker Hub
1 | docker login |
- 标记镜像
将镜像标记为你的 Docker Hub 存储库。例如,将 hexo:latest
标记为 yourusername/hexo:latest
:
1 | docker tag hexo:latest yourusername/hexo:latest |
- 推送镜像
1 | docker push yourusername/hexo:latest |
4.1 备份镜像到本地
- 保存镜像
使用 docker save
命令将镜像保存到一个 tar 文件。例如,将 hexo:latest
保存到 hexo_latest.tar
:
1 | docker save -o hexo_latest.tar hexo:latest |
- 加载镜像
以后你可以使用 docker load
命令从 tar 文件加载镜像。例如,从 hexo_latest.tar
加载镜像:
1 | docker load -i hexo_latest.tar |
5.挂载容器文件的注意项
在构建镜像时,已经生成了/hexo/blog
目录,如果直接执行:
1 | docker run -it --name="my-blog" -p 4000:4000 -v ~/Hexo/hexo:/hexo hexo:latest /bin/bash |
这回在主机的~/Hexo/hexo
目录和容器内的/hexo
目录之间创建一个卷映射。这意味着容器内的/hexo
目录会被主机上的~/Hexo
目录的内容覆盖。如果主机上的~/Hexo
目录是空的或不存在,那么容器内的/hexo
目录也会是空的。
5.6.1 解决方法
方式一、确保主机目录包含内容
在主机上确保 ~/Hexo
目录存在并包含Hexo
项目文件。如果目录不存在或为空,可以先在主机上初始化hexo
项目:
1 | mkdir -p ~/Hexo/hexo |
方式二、在容器内初始化 Hexo 项目
如果希望在容器内初始化 Hexo 项目而不是依赖主机目录,可以先启动一个临时容器,初始化项目,然后将其复制到主机目录:
1 | docker run -it hexo:latest /bin/bash |
在容器内执行以下命令:
1 | npm install hexo-cli -g |
退出容器(exit
),然后将容器内的 /hexo
目录复制到主机:
1 | docker cp <container_id>:/hexo ~/Hexo |
这里的 <container_id>
是你刚刚启动的容器的 ID。可以使用 docker ps -a
命令找到它。
6.最终步骤
确保主机上的 ~/Hexo
目录存在并包含 Hexo 项目文件,然后再次运行 Docker 容器:
1 | docker run -it --name="my-blog" -p 4000:4000 -v ~/Hexo/hexo:/hexo hexo:latest /bin/bash |
这时,容器内的 /hexo
目录将包含主机上 ~/Hexo/hexo
目录的内容。
- Title: 通过Docker搭建Hexo博客
- Author: loskyertt
- Created at : 2024-07-24 10:57:40
- Updated at : 2024-11-13 03:07:10
- Link: https://redefine.ohevan.com/2024/07/24/Docker-Hexo/
- License: This work is licensed under CC BY-NC-SA 4.0.