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里面配置的端口来访问网站了。