docker compose部署halo博客
创建网站目录,切换到目录:
mkdir -p /root/data/docker_data/halo && cd /root/data/docker_data/halo
创建网络:web_network,因为我需要把halo和npm放在一个web里面,这样npm就可以对halo进行反向代理。
docker network create web_network
新建docker-compose.yml文件
nano docker-compose.yml
粘贴内容
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
web_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8890:8890"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8890/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
# JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=username
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=password
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=https://www.idengd.com
halodb:
image: postgres:15.4
restart: on-failure:3
networks:
web_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_USER=username
- POSTGRES_DB=halo
- PGUSER=halo
networks:
web_network:
执行安装命令:
docker compose up -d
此时出现了报错信息,原因是网络问题,需要修改镜像源为国内镜像源。
执行修改命令:
sudo nano /etc/docker/daemon.json
粘贴镜像源内容:https://xxxxxxx.mirror.aliyuncs.com第一条需要自己在阿里云申请,或者直接删除第一条。
{
"registry-mirrors": [
"https://xxxxxxx.mirror.aliyuncs.com",
"https://0dj0t5fb.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://6kx4zyno.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
保存后查看是否修改成功:
cat /etc/docker/daemon.json
重启dokcer服务,执行下面两句命令:
sudo systemctl daemon-reload
sudo systemctl restart docker
执行安装命令:
docker compose up -d
安装成功后,就可以根据docker-compose.yml里面配置的端口来访问网站了。