250116 TIL 도커 컨테이너 및 Docker-Compose 학습

윤수용·2025년 1월 16일
0

TIL

목록 보기
103/113

1. 한 일

도커 컨테이너 및 Docker-Compose 학습

  • 도커 컨테이너:
    • Dockerfile을 작성하고 컨테이너를 생성하는 기본 과정을 학습.
    • Django 프로젝트를 예로 들어 도커 이미지를 빌드하고 컨테이너를 실행.
    • docker run 명령어로 컨테이너를 실행하고 관리하는 방법 실습.
  • Docker-Compose:
    - 여러 컨테이너 간의 의존성 및 설정을 한 번에 관리하는 방법 학습.
    - docker-compose.yml 파일 작성으로 컨테이너 작동 순서와 참조 관계를 설정.




2. TroubleShooting

docker-compose.yml 파일에서 컨테이너 간의 참조 문제

  • 문제:
    • depends_on 옵션으로 컨테이너 실행 순서를 지정했지만, 특정 컨테이너(Django)가 의존하는 컨테이너(PostgreSQL)가 완전히 준비되지 않은 상태에서 실행됨.
    • 결과적으로 Django 앱이 데이터베이스 연결에 실패.
  • 해결:
    - Django 컨테이너에서 PostgreSQL이 완전히 준비될 때까지 대기하는 스크립트를 추가.
    - entrypoint.sh 파일로 실행 전 대기 로직을 구현.
    - docker-compose up 실행 시 모든 의존 컨테이너가 정상 작동 상태인지 확인.




3. 느낀 점

도커와 Docker-Compose의 강력함

  • 단일 컨테이너 실행보다 docker-compose를 사용해 전체 서비스를 관리하면 훨씬 효율적임.
  • 네트워크 설정, 환경 변수 전달, 볼륨 공유 등을 간단히 설정할 수 있어 유지보수가 용이.

순서 보장 이상의 준비 상태 확인 필요

  • depends_on은 컨테이너 실행 순서만 보장할 뿐, 준비 상태를 보장하지 않음을 깨달음.
  • 특히 데이터베이스처럼 초기화 시간이 필요한 서비스는 준비 상태를 확인하는 로직이 필요.

문제 해결력 향상

  • 단순히 문제를 해결하는 데 그치지 않고, 왜 문제가 발생했는지 원인을 분석하고, 이를 일반화하여 다른 프로젝트에서도 활용할 수 있는 교훈으로 삼음.
profile
잘 먹고 잘 살자

0개의 댓글

관련 채용 정보