1. 环境配置
mkdir -p /docker/halo /docker/mysql-halo/data /docker/mysql-halo/conf /docker/mysql-halo/log /docker/mysql-halo/mysqlBackup && \
tee /docker/halo/.env <<-'EOF'
YOURLS_SITE=${YOURLS_SITE} # 需替换为自己的域名
MYSQL_ROOT_PASSWORD=<MYSQL_ROOT_PASSWORD>
MYSQL_DATABASE=<MYSQL_DATABASE>
MYSQL_USER=<MYSQL_USER>
MYSQL_PASSWORD=<MYSQL_PASSWORD>
EOF
2. 编辑 docker-compose.yml
tee /docker/halo/docker-compose.yml <<-'EOF'
services:
halo:
image: halohub/halo:2
container_name: halo
restart: unless-stopped
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://mysql-halo:3306/${MYSQL_DATABASE}
- --spring.r2dbc.username=${MYSQL_USER}
- --spring.r2dbc.password=${MYSQL_PASSWORD}
- --spring.sql.init.platform=mysql
- --halo.external-url=${YOURLS_SITE}
volumes:
- /docker/halo:/root/.halo2
depends_on:
- mysql-halo
healthcheck:
test: ["CMD", "curl", "-f", "http://halo:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
networks:
- internal
mysql-halo:
image: mysql:8.1.0
container_name: mysql-halo
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- /docker/mysql-halo/data:/var/lib/mysql
- /docker/mysql-halo/log:/var/log/mysql:rw
- /docker/mysql-halo/conf/:/etc/mysql/conf.d
- /docker/mysql-halo/mysqlBackup:/data/mysqlBackup
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
networks:
- internal
networks:
internal:
external: true
name: internal
EOF
3. 运行 docker compose
cd /docker/halo/ && \
docker compose up -d
4. 其他
# backup
cd /docker/halo/ && \
docker compose stop && \
docker compose rm -f && \
docker rmi halohub/halo:2 && \
docker rmi mysql:8.1.0 && \
rm -rf /docker/halo
# 查看日志
docker compose logs
&NPM
Domain Names
<域名>
Forward Hostname / IP
halo
Forward Port
8090