[Docker] n8n 환경 구성 (Docker Compose)




Docker Compose 파일로 n8n을 도커에 구성한 내용을 정리 합니다.


n8n 소개

n8n이란 무엇인가?

n8n(발음: “네이튼”)은 “노 코드” 또는 “로우 코드” 접근 방식을 사용하여 복잡한 데이터 통합 및 자동화 워크플로우를 구축할 수 있는 오픈 소스 툴입니다.

사용자 친화적인 웹 기반 인터페이스를 통해, 비개발자도 쉽게 사용할 수 있으며, 개발자는 더욱 복잡한 자동화 작업을 신속하게 개발할 수 있습니다.


n8n 주요 특징

1. 다양한 통합 옵션

n8n은 200개 이상의 다른 서비스와 애플리케이션에 대한 노드(워크플로우 내의 작업 단위)를 제공합니다.

이를 통해 사용자는 Slack, Google Sheets, GitHub, Trello 등 다양한 플랫폼과의 상호 작용을 자동화할 수 있습니다.

2. 사용자 친화적인 인터페이스

웹 기반의 드래그 앤 드롭 인터페이스를 통해, 사용자는 복잡한 로직을 쉽게 시각화하고 구성할 수 있습니다.

이는 프로세스의 이해를 돕고, 에러를 최소화합니다.

3. 유연성과 확장성

n8n은 자체 서버나 클라우드 인스턴스에 설치하여 사용할 수 있어, 비즈니스 요구사항이나 개인 선호도에 맞게 환경을 커스터마이징할 수 있습니다.

또한, 오픈 소스이기 때문에 커뮤니티의 지원을 받아 지속적으로 기능이 추가되고 개선됩니다.

4. 오픈 소스

n8n은 MIT 라이선스로 배포되어 있어, 사용자는 비용 부담 없이 자유롭게 사용, 수정, 배포할 수 있습니다.

이는 비용 효율적인 자동화 솔루션을 찾는 기업과 개인에게 매력적인 옵션입니다.


n8n 구성

docker-compose.yml

version: '3.8'

volumes:
  db_storage:
  n8n_storage:

services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_NON_ROOT_USER
      - 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
    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}
    ports:
      - 5678:5678
    links:
      - postgres
    volumes:
      - n8n_storage:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

.env

POSTGRES_USER=changeUser
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n

POSTGRES_NON_ROOT_USER=changeUser
POSTGRES_NON_ROOT_PASSWORD=changePassword

postgres 데이터베이스 설정 관련 환경 파일입니다.

init-data.sh

#!/bin/bash
set -e;


if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
	psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
		CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
		GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
		GRANT CREATE ON SCHEMA public TO ${POSTGRES_NON_ROOT_USER};
	EOSQL
else
	echo "SETUP INFO: No Environment variables given!"
fi

postgers 데이터베이스 초기 설정을 위한 스크립트 파일입니다.

컨테이너 실행

docker-compose up -d

접속 테스트

  • 접속 URL : http://localhost:5678

owner 계정을 생성 합니다.

  • 로그인 및 n8n 접속

정상적으로 사이트 접속이 되는 것이 확인됩니다.


참고 문서

  • https://docs.n8n.io/hosting/
  • https://docs.n8n.io/hosting/installation/docker/
  • https://github.com/n8n-io/n8n/tree/master/docker/compose/withPostgres



Leave a Comment