核心部署策略:使用 Docker Compose
遵循 Docker Compose 的使用方法,以下是 MySQL 的典型配置。
docker-compose.yml 示例
services:
n8n:
image: n8nio/n8n
deploy:
restart_policy:
condition: always
delay: 5s
window: 60s
container_name: n8n
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro # 保持容器时间与宿主机一致
- /etc/timezone:/etc/timezone:ro # 保持容器时间与宿主机一致
- /fs/1000/ftp/docker/n8n/data:/home/node/.n8n
ports:
- 5678:5678/tcp
environment:
- N8N_SECURE_COOKIE=false
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=postgres
- DB_POSTGRESDB_PASSWORD=Postgres12#$
networks:
- postgres_default
networks:
postgres_default:
external: true # 表示这个网络是在外部创建的
配置解析与说明
n8n 服务
- 镜像 (
image): 使用n8n.io/n8n官方镜像。 - 端口映射 (
ports): 将容器的 5678 端口映射到宿主机的 5678 端口,以便通过浏览器访问。这也是 Docker 端口映射 的一个典型应用。 - 环境变量 (
environment): 配置N8N_HOST,N8N_PORT等 n8n 特有环境变量。你也可以在这里配置 数据库连接字符串。 - 数据持久化 (
volumes):n8n_data:/home/node/.n8n确保 n8n 的配置和工作流数据不会丢失,这是 Docker 卷 和 数据库容器数据持久化 的一个具体实践。 - 网络 (
networks): 使用自定义n8n_network,保障 Docker 网络 中服务的隔离和通信。
数据库服务 (PostgreSQL)
- 镜像 (
image): 采用postgres:16-alpine,这是一个轻量级的 PostgreSQL Docker 镜像。 - 环境变量 (
environment): 使用POSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORD进行数据库初始化,参考 PostgreSQL 环境变量配置。 - 数据持久化 (
volumes):postgres_n8n_data:/var/lib/postgresql/data同样需要 Docker 卷 进行数据持久化。
相关概念
- Docker 部署 Web 应用 (更广泛的 Web 应用部署 MOC)
- MOC - Docker 部署关系型数据库策略 (如果你已经创建了这个子 MOC)