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