--- title: 2025.12 重新在docker部署安装halo slug: 2025.12-chong-xin-zai-dockerbu-shu-an-zhuang-halo cover: "" categories: [] tags: [] halo: site: http://www.xybkwd.top name: ef1a2d4b-3cd8-4d95-ac58-5c705ba636a0 publish: false 创建时间: 2026-01-07T17:32 更新时间: 2026-01-07T17:32 --- #软件配置 #博客 #halo #docker #云服务器 2026.1.7更新2.22.7时补充: ```bash cd / cd opt cd halo root@VM-4-13-ubuntu:/opt/halo# docker-compose down Removing b0d24497f8e0_halo ... done Removing network halo_default root@VM-4-13-ubuntu:/opt/halo# docker-compose pull Pulling halo ... done root@VM-4-13-ubuntu:/opt/halo# docker-compose up -d halo is up-to-date # 之后等待,就可以重新登录halo博客 # 从登录云服务器开始,到更新完成的整个操作过程操作记录如上 # 在操作之前我已在博客后台进行备份,更新完成后数据还在因此没有使用恢复 # 但是建议以后得操作还是要进行备份 ``` --- 2025.12 首次更新博客 本次更新halo时,发现上次重新部署halo时并没有采用docker-compose方式部署,而是直接采用docker run进行部署的,因此导致本次试图更新的时候找不到`docker-compose.yml`文件,因此也就没有使用一键更新的方式。 --- ### 一、本次问题起源 此前因信息安全的原因进行过halo的重新部署,本想着这次应该轻车熟路,但是因为上次最后不是使用docker-compose进行安装的,因此没有办法使用一键安装。 首先我经历了较为长久的确定安装方式的研究,最终确定我是使用docker run部署的。 在这种情况下,只得采用**博客备份、docker部署的halo删除、建立docker-compose.yml的方式重新部署。** ### 二、本次的操作: 一是创建`docker-compose.yml`文件 本次把文件放在了以下的路径中,并不是容器在这里。 ```bash sudo mkdir -p /opt/halo cd /opt/halo ``` 二是使用`nano`,将下面的内容粘贴近yml文件中 ```yml version: "3.8" services: halo: image: halohub/halo:2.21.10 # 建议指定一个已知稳定的版本号,而非 latest container_name: halo restart: unless-stopped # 除非手动停止,否则总是重启 volumes: # 【关键】将你现有的 Halo 数据目录挂载到容器内 # 左边 /root/.halo 替换为你通过 `docker inspect halo` 查到的真实数据目录 - /root/.halo:/root/.halo2 ports: - "8090:8090" # 保持与你当前映射的端口一致 # 外部访问地址,请根据你最终希望通过哪个域名访问来修改 # 例如:--halo.external-url=https://blog.yourdomain.com command: - --halo.external-url=http://localhost:8090/ ``` 三是停止并删除原来的halo docker,按照yml的配置重新拉取并部署 ```bash docker stop halo docker rm halo docker-compose up -d ``` 四是运行`docker-compose ps`或 `docker ps`,查看 `halo`容器的状态是否为 "Up"。 --- 以后再更新时,使用以下命令即可。 **每次更新,都必须要进行备份** ```bash docker-compose pull # 1. 拉取新版本的镜像(如果yml文件中的镜像版本号已修改,此命令会下载新镜像) docker-compose up -d # 2. 使用新镜像重新创建并启动容器 ``` 目前还有一个疑点,但是不是很重要 即yml文件中的挂载地址和容器中的好像有一点差异,导致本次利用docker-compose安装时,数据都丢失了。 为什么说不重要呢? 因为不管怎么更新,我的博客数据是一定要备份的 因此,这个挂载不重要。 但是目前处于一种不确定,但是不太敢折腾的状态 等到下次版本的更新时看一下 一键更新后时无缝衔接呢,还是又被重新初始化了? 我个人猜测应该不会被初始化了 [[【索引】Halo博客搭建过程记录]]