Skip to content

数据库部署

本文档介绍通过 1Panel 部署 MySQL、MariaDB 和 PostgreSQL 数据库。

MySQL

Docker Compose 配置

在 1Panel 的 Docker Compose 应用中粘贴以下内容:

yaml
services:
  mysql:
    image: mysql:9.0
    container_name: ipam-mysql
    restart: unless-stopped
    volumes:
      - ./mysql-data:/var/lib/mysql
    environment:
      - TZ=${TZ:-Asia/Shanghai}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root_password}
      - MYSQL_DATABASE=${DB_NAME:-ipam}
      - MYSQL_USER=${DB_USER:-ipam}
      - MYSQL_PASSWORD=${DB_PASSWORD:-password}
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

1Panel 环境变量配置

ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai

# ==============================================================================
# 2. MySQL
# ==============================================================================
MYSQL_ROOT_PASSWORD=root_password
DB_NAME=ipam
DB_USER=ipam
DB_PASSWORD=password

部署步骤

  1. 在 1Panel 中创建 Docker Compose 应用
  2. 将上述 Docker Compose 配置粘贴到 compose 配置中
  3. 将上述环境变量粘贴到环境变量配置中
  4. 点击部署

MariaDB

Docker Compose 配置

在 1Panel 的 Docker Compose 应用中粘贴以下内容:

yaml
services:
  mariadb:
    image: mariadb:12
    container_name: ipam-mariadb
    restart: unless-stopped
    volumes:
      - ./mariadb-data:/var/lib/mysql
    environment:
      - TZ=${TZ:-Asia/Shanghai}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root_password}
      - MYSQL_DATABASE=${DB_NAME:-ipam}
      - MYSQL_USER=${DB_USER:-ipam}
      - MYSQL_PASSWORD=${DB_PASSWORD:-password}
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

1Panel 环境变量配置

ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai

# ==============================================================================
# 2. MariaDB
# ==============================================================================
MYSQL_ROOT_PASSWORD=root_password
DB_NAME=ipam
DB_USER=ipam
DB_PASSWORD=password

部署步骤

  1. 在 1Panel 中创建 Docker Compose 应用
  2. 将上述 Docker Compose 配置粘贴到 compose 配置中
  3. 将上述环境变量粘贴到环境变量配置中
  4. 点击部署

PostgreSQL

Docker Compose 配置

在 1Panel 的 Docker Compose 应用中粘贴以下内容:

yaml
services:
  postgres:
    image: postgres:18.4-alpine
    container_name: ipam-postgres
    restart: unless-stopped
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    environment:
      - TZ=${TZ:-Asia/Shanghai}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
      - POSTGRES_USER=${POSTGRES_USER:-ipam}
      - POSTGRES_DB=${POSTGRES_DB:-ipam}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-ipam}"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

1Panel 环境变量配置

ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai

# ==============================================================================
# 2. PostgreSQL
# ==============================================================================
POSTGRES_PASSWORD=password
POSTGRES_USER=ipam
POSTGRES_DB=ipam

部署步骤

  1. 在 1Panel 中创建 Docker Compose 应用
  2. 将上述 Docker Compose 配置粘贴到 compose 配置中
  3. 将上述环境变量粘贴到环境变量配置中
  4. 点击部署

使用已有数据库

如果已经部署了数据库服务(非 Docker Compose 方式),可直接在现有数据库中创建应用所需的数据库和用户。

MySQL / MariaDB

sql
CREATE DATABASE IF NOT EXISTS ipam DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'ipam'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON ipam.* TO 'ipam'@'%';
FLUSH PRIVILEGES;

执行完成后,在应用配置中设置 DB_HOSTDB_PORTDB_USERDB_PASSWORDDB_NAME 即可连接。

PostgreSQL

sql
CREATE DATABASE ipam;
CREATE USER ipam WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE ipam TO ipam;

PostgreSQL 还需在连接后为 ipam 数据库下的 public schema 授权:

sql
\c ipam
GRANT ALL ON SCHEMA public TO ipam;

执行完成后,在应用配置中设置 DB_HOSTDB_PORTDB_USERDB_PASSWORDDB_NAME 即可连接。


环境变量说明

变量说明默认值
TZ容器时区Asia/Shanghai
DB_TYPE数据库类型mysql / mariadb / postgresql
DB_HOST数据库地址127.0.0.1
DB_PORT数据库端口3306 / 5432
DB_USER数据库用户名ipam
DB_PASSWORD数据库密码password
DB_NAME数据库名称ipam

安全建议

  1. 修改默认密码:部署后立即修改数据库 root 密码
  2. 使用 HTTPS:生产环境必须使用 HTTPS
  3. 防火墙配置:仅开放必要的端口
  4. 定期备份:定期备份数据库
  5. 访问控制:限制数据库访问IP

基于 MIT 许可发布