39

How: Dockerfile & docker-compose.yml 작성

Docker 배포 & 테스트

학습 목표
  • Dockerfile을 작성하고 빌드할 수 있다
  • docker-compose.yml을 작성할 수 있다
  • .dockerignore로 불필요한 파일을 제외할 수 있다

Docker 설정 파일 작성

Step 1: .dockerignore

빌드 컨텍스트에서 제외할 파일 목록

Step 2: Dockerfile

Python 3.12-slim 기반, Streamlit 실행

Step 3: docker-compose.yml

앱 + Neo4j 구성

Step 4: 빌드 & 실행

docker compose up --build

Step 5: 시드

python scripts/seed_data.py


파일 이름과 명령어를 헷갈리지 않는다

명령어는 docker compose up 처럼 띄어 쓰고, 파일 이름은 docker-compose.yml 로 붙임표를 쓴다. 파일을 docker compose.yml 로 만들면 docker compose up 이 찾지 못한다. Compose v2 는 compose.yaml 도 읽으므로 둘 중 하나로 통일하면 된다.

CMD 에 주소를 명시한다

컨테이너 안에서 Streamlit 이 기본값인 localhost 에 붙으면 호스트에서 8501 을 열어도 연결되지 않는다. ~/.streamlit/config.tomlRUN echo '...\n...' 로 만드는 방법은 셸에 따라 \n 이 다르게 풀려서 지금 우연히 도는 것일 수 있다. --server.address=0.0.0.0 을 CMD 에 적는 편이 안전하고, core reading 의 예시와도 같아진다.

에디터 로딩 중...
힌트 보기
  • pyproject.toml을 먼저 복사하면 의존성 캐시를 활용할 수 있다
  • docker-compose.yml에서 서비스 이름이 DNS 이름이 된다
  • 컨테이너 안에서는 --server.address=0.0.0.0 을 CMD에 명시해야 호스트에서 열린다
  • depends_on + healthcheck로 서비스 시작 순서 보장
  • .dockerignore에 .env를 넣어 이미지에 포함되지 않게
  • 시드는 CREATE가 아니라 MERGE로 — 두 번 돌려도 노드가 겹치지 않는다
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
Dockerfile 레이어 캐시 & 보안 점검AI 학습 팁

AI에게 Dockerfile과 docker-compose.yml에서 레이어 캐시 비효율, 비밀값 하드코딩, 헬스체크 누락을 찾게 하세요.

이 제조 AI 통합 시스템의 Dockerfile과 docker-compose.yml을 검토해줘. pip install이 COPY . 이후에 위치해 캐시가 무효화되는 순서 문제, .env 파일이 이미지에 포함될 위험, Neo4j·ChromaDB·Streamlit 컨테이너에 healthcheck 누락을 분석하고 수정된 코드를 제안해줘.
이 팁이 도움이 됐나요?
용어