n8n + Execute Command 노드, 도커에서 쓰려면 이렇게!
자동화를 사랑하는 사람이라면 한 번쯤 n8n을 만져보셨을 텐데요, 혹시... "n8n에서 외부 명령어도 실행할 수 있어?" 하고 궁금해본 적 있으세요? 🙋♀️
있다면, 딱 기다리던 글이에요. 오늘은 n8n의 Execute Command 노드를 샅샅이 파헤치고, 특히 Docker 환경에서의 제한을 어떻게 우아하게 극복할 수 있는지까지! 속 시원하게 알려드릴게요.
🤖 "명령어야 나와라~!" Execute Command 노드란?
이 노드, 마치 비밀 도구 꺼내는 도라에몽 같달까요? ✨
- 시스템 명령어 실행도 뚝딱!
- 파이썬 스크립트도 쓱쓱~
- 심지어 원격 서버까지 슥~ 제어 가능!
예를 들어 python3 /data/scripts/process.py
같은 명령어 하나로, n8n이 데이터를 분석하고 정리하고, 이메일까지 착착 보내주는 마법 같은 자동화를 구현할 수 있죠.
🐳 그런데 말입니다... Docker 환경에서는?
n8n을 Docker로 돌리고 있다면, 여기에 반전 스토리가 있어요.
🙀 “Execute Command 노드를 썼더니 안 돌아간다고?!”
💥 그 이유는?
- 명령어는 컨테이너 안에서만 실행돼요.
- 기본 n8n 이미지에는
python3
같은 필수 도구가 빠져있어요. - 외부 서버나 다른 컨테이너에 접근하려면 권한과 마운트 설정이 필요해요.
그러니까, 아무 명령어나 돌릴 수는 없고, 환경 세팅을 제대로 해줘야 명령어의 마법이 펼쳐지는 거죠.
🧙♀️ 그래서 준비했어요! 커스텀 Docker 이미지 + 공유 폴더 마법 조합
n8n의 잠재력을 200% 끌어내는 핵심 전략, 알려드릴게요.
✅ 목표는 이거예요:
python3
,curl
같은 툴들을 이미지에 내장!- 자주 쓰는 파이썬 라이브러리도 미리 설치!
- 호스트의 코드 폴더를
/data/scripts
로 볼륨 마운트해서, 스크립트 바뀌어도 바로 반영!
🧾 Dockerfile 핵심 요약:
FROM n8nio/n8n:latest
USER root
RUN apk add --no-cache python3 py3-pip docker-cli curl \
&& pip3 install pandas requests numpy
RUN mkdir -p /data/scripts && chmod -R 755 /data/scripts
USER node
👏 이렇게 하면, n8n 속 Execute Command 노드에서 python3
도, curl
도 걱정 없이 바로 쓸 수 있어요!
🧩 docker-compose.yml도 한번에 셋팅하기
volumes:
- ./scripts:/data/scripts
- /var/run/docker.sock:/var/run/docker.sock
이 조합, 진짜 꿀입니다 🍯./scripts
폴더에 파이썬 파일만 넣으면, n8n이 그것들을 호출해서 데이터 슝슝~ 처리해줄 수 있어요.
게다가 docker.sock
을 마운트하면, 컨테이너 안에서 docker ps
나 docker exec
도 가능해져요!
✨ n8n에서 Execute Command 노드 설정은 이렇게!
python3 /data/scripts/process_data.py '{{ JSON.stringify($json) }}'
이렇게 설정해두면, 이전 노드에서 받은 데이터를 파이썬 스크립트에 넘겨주고, 그 결과를 기반으로 다음 작업까지 쭉 이어갈 수 있어요. 완전 유기적인 플로우죠!
⚠️ 잠깐! 보안은 꼭 챙기셔야 해요
docker.sock
은 강력한 권한을 줘요. 되도록 신뢰된 환경에서만!- 비밀번호나 민감 정보는
.env
로 따로 관리해 주세요.
✅ 요약 요약~! (한 장 정리 느낌으로)
항목 | 내용 요약 |
---|---|
사용 노드 | Execute Command 노드 |
할 수 있는 일 | 명령어 실행, 파이썬 스크립트 호출, 원격 제어까지 OK! |
Docker 환경 한계 | 기본 이미지에 도구 없음, 컨테이너 내부에서만 실행 가능 |
해결 방법 | 커스텀 이미지 + 코드 공유 볼륨 구성 |
핵심 디렉토리 | /data/scripts |
실행 예시 | python3 /data/scripts/myscript.py '{{ $json }}' |
💬 직접 해보는 게 제일 빨라요!
고블로는 이걸 직접 돌려보고 "와~ 이거 진짜 자동화 꿀잼이다!" 했던 기억이 있어요.
단순 반복 작업이 쏙쏙 줄어드니까, 하루에 여유 시간이 확 늘어난 느낌이랄까요? ☕
여러분도 n8n과 Execute Command 노드를 활용해서 진짜 나만의 스마트한 자동화 시스템 만들어보세요!