Docker部署halo并实现公网访问

确保防火墙状态正在运行

在正式开始部署之前需要确保防火墙是打开的,用下面的命令检测

[root@Anhui ~]# systemctl status firewalld

如果出现running的提示则说明是运行的

 

安装Docker

国内使用阿里云源来加速安装Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装好了之后启动docker并启用docker服务

[root@Anhui ~]# systemctl start docker
[root@Anhui ~]# systemctl enable docker

 

手动安装docker-compose

Github发行网站

下载最新的x86_64版本

下载完成后将二进制文件传到服务器的/root目录

安装lrzsz的rpm包便于使用rz命令上传

yum -y install lrzsz

重命名二进制文件

[root@Anhui ~]# mv docker-compose-linux-x86_64 docker-compose

赋予二进制文件可执行权限

[root@Anhui ~]# chmod +x docker-compose

移动文件

[root@Anhui ~]# mv docker-compose /usr/local/bin/

创建软链接

[root@Anhui ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

安装完成之后输入下面的命令测试,如果能输出版本号,说明安装的没有问题

[root@Anhui ~]# docker-compose version
Docker Compose version v2.24.5

全部安装过程如下

 

使用docker-compose部署halo

创建项目存放路径

mkdir /opt/halo && cd /opt/halo

编辑docker-compose配置文件

[root@Anhui halo]# vim docker-compose.yaml

在文件中写入以下内容

version: "3"

services:
  halo:
    image: halohub/halo:2.12
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      # 前面的端口可以修改成自己想要的,不一定要8090
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/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=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
  halodb:
    image: postgres:15.4
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

启动容器

[root@Anhui nginx]# docker-compose up -d

 

使用docker-compose部署NPM

创建项目存放目录

mkdir /opt/nginx && cd /opt/nginx

创建docker-compose配置文件

[root@Anhui nginx]# vim docker-compose.yaml

写入以下内容

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      # 修改443端口为自己vps开放端口
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

启动容器

[root@Anhui nginx]# docker-compose up -d

 

使用NPM反向代理博客

最后使用NPN反向代理博客以便公网访问

最好将域名托管到Cloudflare

在Cloudflare里面创建域名解析

拿到api_key用于在NPN里面申请SSL证书

THE END
分享
二维码
海报
Docker部署halo并实现公网访问
确保防火墙状态正在运行 在正式开始部署之前需要确保防火墙是打开的,用下面的命令检测 [root@Anhui ~]# systemctl status firewalld 如果出现running的提示则……