Dify Docker 문제 해결
Dify Docker 문제 해결 (Docker Issues)
Docker 관련해서 자주 겪는 문제들을 모았어요. 증상별로 나눠서 정리했으니 맞는 곳을 찾아보세요.
네트워크·연결 (Network & Connectivity)
502 Bad Gateway
Nginx가 잘못된 컨테이너 IP로 포워딩하고 있을 때 나타나요. 현재 컨테이너 IP를 얻으세요.
docker ps -q | xargs -n 1 docker inspect --format '{{ .Name }}: {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
다음 같은 줄을 찾으세요.
/docker-web-1: 172.19.0.5
/docker-api-1: 172.19.0.7
dify/docker/nginx/conf.d를 업데이트합니다.
http://api:5001을http://172.19.0.7:5001로 교체http://web:3000을http://172.19.0.5:3000으로 교체
nginx를 재시작하거나 설정을 리로드하세요. 참고: 컨테이너를 재시작하면 IP가 바뀌어요.
localhost 서비스에 접속할 수 없음
Docker 컨테이너는 127.0.0.1로는 호스트 서비스에 닿을 수 없어요. 대신 머신의 로컬 네트워크 IP를 사용하세요. 예: 호스트에서 OpenLLM을 실행 중이라면 Dify를 http://192.168.1.100:port(실제 로컬 IP)로 구성하세요.
CORS 오류와 함께 페이지가 계속 로딩
도메인/URL을 바꾸면 크로스 오리진 문제가 생겨요. docker-compose.yml에서 업데이트하세요.
CONSOLE_API_URL— 콘솔 API 백엔드 URLCONSOLE_WEB_URL— 콘솔 웹 프론트엔드 URLSERVICE_API_URL— 서비스 API URLAPP_API_URL— 웹앱 API 백엔드 URLAPP_WEB_URL— 웹앱 URL
마운팅·볼륨 (Mounting & Volumes)
Nginx 구성 마운트 실패
이런 오류가 나요:
Error mounting "/run/desktop/mnt/host/d/Documents/docker/nginx/nginx.conf" to rootfs at "/etc/nginx/nginx.conf": not a directory
전체 프로젝트를 클론하고 docker 디렉터리에서 실행하세요.
git clone https://github.com/langgenius/dify.git
cd dify/docker
docker compose up -d
포트 충돌
포트 80이 이미 쓰이고 있나요? 두 가지 방법이 있어요.
- 충돌하는 서비스(보통 Apache/Nginx)를 중지:
sudo service nginx stop
sudo service apache2 stop
- 아니면
docker-compose.yaml의 포트 매핑을 변경:
ports:
- "8080:80" # 다른 포트로 매핑
컨테이너 관리 (Container Management)
백그라운드 셸 출력 보기
실행 중인 셸 목록을 봅니다.
docker exec -it docker-api-1 ls /tmp/shells/
셸 출력을 확인합니다.
docker exec -it docker-api-1 cat /tmp/shells/[shell-id]/output.log
컨테이너 재시작 문제
시스템을 재부팅한 뒤 컨테이너가 연결에 실패할 수 있어요. 올바른 시작 순서를 보장하세요.
docker compose down
docker compose up -d
접속하기 전에 모든 서비스가 healthy 상태가 될 때까지 기다리세요.
SSRF 프록시 (SSRF Proxy)
ssrf_proxy 컨테이너는 Server-Side Request Forgery 공격을 막아요.
프록시 규칙 커스터마이즈
docker/volumes/ssrf_proxy/squid.conf를 편집해 ACL 규칙을 추가하세요.
# 민감한 내부 IP에 대한 접근 차단
acl restricted_ip dst 192.168.101.19
acl localnet src 192.168.101.0/24
http_access deny restricted_ip
http_access allow localnet
http_access deny all
변경 후 프록시 컨테이너를 재시작하세요.
SSRF_PROXY가 왜 필요한가요?
서비스가 내부 네트워크 리소스에 무단 요청을 보내는 걸 막아요. 프록시는 샌드박스 서비스의 모든 외부 발신 요청을 가로채고 필터링합니다.