개발자로서 살아남기/n8n

docker-compose을 이용한 n8n 설치 중 Error: Command "start" not found 이슈

코드 살인마 2025. 7. 25. 16:37
728x90

개요

docker-compose 를 이용한 n8n 설치중 아래와 같은 에러가 발생하였다.

결과적으로는 docker-compose.yml 파일에서 volume 경로 문제였다.

 

아래는 GPT을 활용하여, 작성하였고, 중간에 내 언어로 몇몇 바꾸었다.

Error: Command "start" not found 이슈 해결 가이드

목표 : Error: Command "start" not found 및
Named volume ... is used ... but no declaration was found 오류를 영구적으로 해결하고,
n8n 컨테이너를 named volume으로 안전하게 재배치한다.


🛠️ 문제 현상

  1. n8n 컨테이너가 즉시 종료(restarting 루프)되며 Error: Command "start" not found 표시
  2. docker compose up -d
  3. ERROR: Named volume "n8n_data:/home/node/.n8n:rw" is used in service "n8n" but no declaration was found in the volumes section.
  4. 원인 : 바인드‑마운트(./n8n_data)가 빈 폴더/잘못된 권한으로 이미지 내부의 기본 파일을 덮어써서 실행 스크립트가 사라짐

📝 해결 절차 한눈에 보기 (TL;DR)

# 0) 컨테이너 중지 & 기존 폴더 백업
docker compose down
mv ./n8n_data ./n8n_data_backup

# 1) docker-compose.yml 수정
#    - ./n8n_data  →  n8n_data
#    - 파일 맨 아래 volumes: 블록 추가

# 2) 새 볼륨으로 기동
docker compose up -d
docker compose ps          # STATUS: Up 확인
docker logs -f n8n         # 정상 로그 확인

# 3) 필요하면 백업 데이터 복사 (선택)
docker run --rm \
  -v n8n_data:/data \
  -v $(pwd)/n8n_data_backup:/from \
  busybox sh -c "cp -av /from/. /data/"

0단계 — 컨테이너 중지 & 데이터 백업

docker compose down
mv ./n8n_data ./n8n_data_backup    # 폴더가 있으면 백업

1단계 — docker-compose.yml 수정

version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "9301:5678"
    environment:
      # ... (생략) ...
    volumes:
      - n8n_data:/home/node/.n8n      # ★ named volume 사용
    depends_on:
      - postgresql

  postgresql:
    image: postgres:13
    restart: always
    environment:
      # ... (생략) ...
    volumes:
      - pg_data:/var/lib/postgresql/data

# ← 파일 맨 아래에 추가!
volumes:
  n8n_data:
  pg_data:

volumes: 블록은 맨 왼쪽에 두어야 하며, 이름만 써도 기본(local) 드라이버로 생성Postgres를 바인드‑마운트로 두고 싶다면 pg_data 부분은 빼도 무방


2단계 — 새 볼륨으로 기동

docker compose up -d
docker compose ps        # n8n STATUS: "Up"인지 확인
docker logs -f n8n       # 부트 로그 + 헬스체크 확인

정상이라면 아래 비슷한 로그가 반복됩니다.

n8n_1  | n8n ready on 0.0.0.0, port 5678
n8n_1  | Version: 1.x.x

3단계 — 기존 데이터 가져오기 (선택 사항)

백업 폴더에서 새 named volume으로 복사:

docker run --rm \
  -v n8n_data:/data \
  -v $(pwd)/n8n_data_backup:/from \
  busybox sh -c "cp -av /from/. /data/"

 

named volume은 이미 UID 1000:1000 소유이므로 별도 chown 필요 없음.


✅ 점검 체크리스트

확인 항목 기대 값 확인 명령
컨테이너 상태 Up (healthy) docker compose ps
n8n 웹 UI 열림 브라우저 → http://localhost:9301/
볼륨 존재 n8n_data docker volume ls
로그 에러 없음 docker logs -f n8n
CLI 버전 v2.0 이상 권장 docker compose version

🆘 문제 해결이 안 될 때

  1. 로그 확인
  2. docker logs -f n8n
  3. 볼륨 권한
  4. docker volume inspect n8n_data
  5. compose 버전 업그레이드
    구버전에서는 volumes: 블록을 인식 못 하는 경우가 있으므로 최신 CLI(v2+) 설치 권장