Docker Compose 使用指南 - 1Panel 版

引言

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过编写 docker-compose.yml 文件,用户可以以声明式的方式描述应用所需的服务、网络和卷等配置。然后只需一条命令(如 docker compose up),即可自动化地创建和启动所有服务,极大简化了多容器应用的部署和管理流程。Docker Compose 特别适合开发、测试和本地部署场景,让复杂的环境搭建变得简单高效。

1Panel 除了支持通过应用商店一键部署常见应用外,还支持通过 Docker Compose 部署应用。通过 Docker Compose 的应用部署方式,你可以快速部署应用商店暂未支持的应用,或者对应用部署细节进行更加灵活的控制。

本文将以 Halo 开源建站工具为例,详细介绍如何在 1Panel 中使用 Docker Compose 部署应用。

创建编排

进入 1Panel 的容器编排页面,点击 创建编排 按钮,进入编排创建页面。来源选择默认的 编辑 即可,文件夹名称使用 halo, 创建后的 Halo 容器编排文件路径为 {1Panel 安装目录}/1panel/docker/compose/halo

create-compose.png

复制 Docker Compose 文件

Halo 官方部署文档中复制 docker-compose.yml 文件内容,并粘贴到 1Panel 的编排创建页面中。

这里我们选择使用 Halo + PostgreSQL 的组合。

halo-docs.png

修改/检查 Docker Compose 文件

根据自身需求对 docker-compose.yml 文件进行修改,这里我们修改了以下配置:

  • 修改了 Halo 映射到宿主机的端口为 8091。

  • 修改了 Halo 的 JVM 参数为 -Xmx512m -Xms512m,增加分配个 JVM 的内存。

  • 修改了 Postgresql 数据库的密码为 Pwd123Halo

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.21
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
-      - "8090:8090"
+      - "8091:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
-      - JVM_OPTS=-Xmx256m -Xms256m
+      - JVM_OPTS=-Xmx512m -Xms512m
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
-      - --spring.r2dbc.password=openpostgresql
+      - --spring.r2dbc.password=Pwd123Halo
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
  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=openpostgresql
+      - POSTGRES_PASSWORD=Pwd123Halo
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

docker-compose.yml 文件修改完成后,点击 确认 按钮,即可创建 Halo 容器编排应用。

compose-log.png

等待提示任务成功后,Halo 容器编排应用创建完成。可以通过 http://{1Panel 服务器 IP}:8091 访问 Halo 应用进行测试。

halo-setup.png

创建反向代理

1Panel 提供的网站管理功能,可以快速创建一个反向代理,将域名指向 Halo 应用。还可以快速申请并配置 SSL 证书,让网站访问更加安全。同时 1Panel 专业版还可以给 Halo 网站提供网站访问监控、WAF 防火墙等高级功能。

进入网站管理页面,点击 创建网站 按钮,网站类型选择 反向代理。填写准备好的域名,例如 halo.demo.com(域名需要提前在域名服务商处添加解析记录),代理地址填写上一步创建的容器编排应用的访问地址 http://{1Panel 服务器 IP}:8091,点击 确认 按钮即可快速完成 Halo 反向代理的创建。

reverse-proxy.png

创建完成后,使用浏览器访问 http://halo.demo.com 即可访问新创建的 Halo 应用。

评论

购物车

总计

¥1299