15분
Pitfall: Docker 배포 실수 5가지
Docker 배포 & 테스트
Pitfall: Docker 배포 실수 5가지
통합 프로젝트 > Docker 배포 & 테스트
학습 목표
Docker 배포 시 흔히 발생하는 문제를 예방한다 디버깅 방법을 익힌다
Docker 배포 실수 5가지
실수 1: .env 파일을 이미지에 포함
# [나쁜 예] .dockerignore에 .env 미포함
# -> docker build 시 .env가 이미지에 포함됨
# -> 이미지를 공유하면 API 키 유출!
# [좋은 예] .dockerignore에 반드시 추가
.env
.env.local
.env.production
실수 2: localhost로 서비스 간 통신
# [나쁜 예] 컨테이너 내부에서
NEO4J_URI = "bolt://localhost:7687"
# -> 컨테이너 자신의 localhost를 가리킴!
# [좋은 예] Docker Compose 서비스 이름 사용
NEO4J_URI = "bolt://neo4j:7687"
# -> Docker 내부 네트워크의 neo4j 서비스
실수 3: Volume 미설정으로 데이터 손실
# [나쁜 예] Volume 없이 실행
services:
neo4j:
image: neo4j:5-community
# Volume 없음!
# -> docker compose down 하면 데이터 전부 삭제
# [좋은 예]
services:
neo4j:
image: neo4j:5-community
volumes:
- neo4j_data:/data # 데이터 영속화!
실수 4: 큰 이미지 크기
# [나쁜 예] 풀 이미지 사용
FROM python:3.11 # ~1GB
# [좋은 예] slim 이미지 사용
FROM python:3.12-slim # ~150MB
# [더 좋은 예] 불필요한 캐시 삭제
RUN pip install --no-cache-dir -e .
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
실수 5: 서비스 시작 순서 미보장
# [나쁜 예] depends_on만 사용
depends_on:
- neo4j
# -> Neo4j 프로세스 시작만 보장, 실제 준비는 미보장
# [좋은 예] healthcheck와 함께
depends_on:
neo4j:
condition: service_healthy
# -> Neo4j가 실제로 쿼리 가능한 상태가 된 후 앱 시작AI로 학습하기 — 꿀팁
✅Docker 배포 실수 빈도 검증AI 학습 팁
Docker 배포 실수 목록 중 제조 OT 환경에서 특히 치명적인 항목이 올바르게 강조되었는지 검증하세요.
Docker 배포 실수로 '(1) .env 파일을 이미지에 포함, (2) latest 태그 사용, (3) 루트 권한 컨테이너 실행, (4) 헬스체크 미설정, (5) 볼륨 마운트 누락으로 데이터 소실'이 언급된다. 제조 공장 내부망(에어갭 환경 포함) 배포 시 가장 치명적인 항목을 우선순위 순으로 재정렬하고 이유를 설명해줘.
이 팁이 도움이 됐나요?