Docker部署Halo2个人Blog
/ 3 min read
Updated:目录
# 创建文件夹及yaml文件mkdir /opt/halo2 && cd /opt/halo2nano docker-compose.yamlservices: halo: image: halohub/halo:2.21 restart: on-failure:3 depends_on: halodb: condition: service_healthy networks: halo_network: volumes: - ./halo2:/root/.halo2 ports: - "8090:8090" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:1080/actuator/health/readiness"] interval: 30s timeout: 5s retries: 5 start_period: 30s command: - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo - --spring.r2dbc.username=halo # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。 - --spring.r2dbc.password=openpostgresqll - --spring.sql.init.platform=postgresql # 外部访问地址,请根据实际需要修改 - --halo.external-url=https://blogs.slioi.com/ halodb: image: postgres:15.4 restart: on-failure:3 networks: halo_network: volumes: - ./db:/var/lib/postgresql/data healthcheck: test: [ "CMD", "pg_isready" ] interval: 10s timeout: 5s retries: 5 environment: - POSTGRES_PASSWORD=openpostgresqll - POSTGRES_USER=halo - POSTGRES_DB=halo - PGUSER=halo
networks: halo_network:- 此示例的 PostgreSQL 数据库容器默认没有设置端口映射,如果需要在容器外部访问数据库,可以自行在
halodb服务中添加端口映射,PostgreSQL 的端口为5432。
docker-compose up -d实时查看日志:
docker-compose logs -f镜像
registry.fit2cloud.com/halo/halohalohub/haloghcr.io/halo-dev/halo更新容器组
- 备份数据,可以参考 备份与恢复 进行完整备份(可选,但推荐备份)。
- 更新 Halo 服务
- 修改 docker-compose.yaml 中配置的镜像版本。
services: halo: image: registry.fit2cloud.com/halo/halo:2.20docker-compose up -d反代
#安装所需程序sudo apt install certbot python3-certbot-nginx python3-certbot-dns-cloudflare nginx#新建一个名为halo2的配置sudo nano /etc/nginx/sites-available/halo2#启用配置sudo ln -s /etc/nginx/sites-available/halo2 /etc/nginx/sites-enabled/#从Cloudflare获取区域DNS APIsudo nano /etc/letsencrypt/cloudflare.inidns_cloudflare_api_token = 你的API#赋予权限sudo chmod 600 /etc/letsencrypt/cloudflare.ini#使用CF-DNS申请证书,你不想关小黄云用这个sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d example.com #替换为你的域名#直接申请证书,上面的申请完后可以用这个命令自动配置HTTPS,选1sudo certbot --nginx -d example.com #替换为你的域名官方配置示例
upstream halo { server 127.0.0.1:8090;}server { listen 80; listen [::]:80; server_name example.com;#修改域名 client_max_body_size 1024m; location / { proxy_pass http://halo; proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}重载
sudo nginx -t #检查配置sudo systemctl reload nginx #重新加载配置