39분
How: Dockerfile & docker-compose.yml 작성
Docker 배포 & 테스트
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.toml 을 RUN 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 누락을 분석하고 수정된 코드를 제안해줘.
이 팁이 도움이 됐나요?