Skip to content

n8n+PostgreSQLをDocker Composeで起動する

バックエンドをPostgreSQLにしたn8nDocker Composeで起動する方法をメモします。尚、Docker Composeでn8nを起動する手順は公式サイトのDocker-Composeに記載されています。

検証環境

対象 バージョン
Ubuntu 24.04.3 LTS
Docker 28.5.1
n8n 1.115.3
postgres 16

設定ファイル例

以下のdocker-compose.yml.envを同一ディレクトリに保存し、docker compose up -dを実行します。暫く待つとhttp://ADDRESS:5678でn8nが起動します。

docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
volumes:
  db_storage:
  n8n_storage:

services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_NON_ROOT_USER==${POSTGRES_NON_ROOT_USER}
      - POSTGRES_NON_ROOT_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
    volumes:
      - db_storage:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: docker.n8n.io/n8nio/n8n:1.115.3
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
      - N8N_SECURE_COOKIE=false
    ports:
      - 5678:5678
    links:
      - postgres
    volumes:
      - n8n_storage:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy
.env
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=n8n_db
POSTGRES_USER=n8n_root
POSTGRES_PASSWORD=n8n_rootpass
POSTGRES_NON_ROOT_USER=n8n_user
POSTGRES_NON_ROOT_PASSWORD=n8n_password

SUBDOMAIN=n8n-poc
DOMAIN_NAME=example.net

GENERIC_TIMEZONE=Asia/Tokyo