主题
数据库部署
本文档介绍通过 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: 30s1Panel 环境变量配置
ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai
# ==============================================================================
# 2. MySQL
# ==============================================================================
MYSQL_ROOT_PASSWORD=root_password
DB_NAME=ipam
DB_USER=ipam
DB_PASSWORD=password部署步骤
- 在 1Panel 中创建 Docker Compose 应用
- 将上述 Docker Compose 配置粘贴到 compose 配置中
- 将上述环境变量粘贴到环境变量配置中
- 点击部署
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: 30s1Panel 环境变量配置
ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai
# ==============================================================================
# 2. MariaDB
# ==============================================================================
MYSQL_ROOT_PASSWORD=root_password
DB_NAME=ipam
DB_USER=ipam
DB_PASSWORD=password部署步骤
- 在 1Panel 中创建 Docker Compose 应用
- 将上述 Docker Compose 配置粘贴到 compose 配置中
- 将上述环境变量粘贴到环境变量配置中
- 点击部署
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: 30s1Panel 环境变量配置
ini
# ==============================================================================
# 1. 时间与区域
# ==============================================================================
TZ=Asia/Shanghai
# ==============================================================================
# 2. PostgreSQL
# ==============================================================================
POSTGRES_PASSWORD=password
POSTGRES_USER=ipam
POSTGRES_DB=ipam部署步骤
- 在 1Panel 中创建 Docker Compose 应用
- 将上述 Docker Compose 配置粘贴到 compose 配置中
- 将上述环境变量粘贴到环境变量配置中
- 点击部署
使用已有数据库
如果已经部署了数据库服务(非 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_HOST、DB_PORT、DB_USER、DB_PASSWORD和DB_NAME即可连接。
PostgreSQL
sql
CREATE DATABASE ipam;
CREATE USER ipam WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE ipam TO ipam;PostgreSQL 还需在连接后为
ipam数据库下的publicschema 授权:sql\c ipam GRANT ALL ON SCHEMA public TO ipam;
执行完成后,在应用配置中设置
DB_HOST、DB_PORT、DB_USER、DB_PASSWORD和DB_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 |
安全建议
- 修改默认密码:部署后立即修改数据库 root 密码
- 使用 HTTPS:生产环境必须使用 HTTPS
- 防火墙配置:仅开放必要的端口
- 定期备份:定期备份数据库
- 访问控制:限制数据库访问IP