[TIL] 내일배움캠프 98일차_[Docker] Docker Compose
👀Today I Learn
Docker Compose란?
- Docker Compose는 다중 컨테이너 애플리케이션을 정의하고 관리할 수 있도록 도와주는 도구
- 복잡한 서비스 구성을 YAML 파일(docker-compose.yml)로 정의하여 손쉽게 실행하고 관리할 수 있음
주요 기능
- 여러 컨테이너를 한 번에 실행: 웹 서버, 데이터베이스, 캐시 서버 등을 한 번에 실행 가능
- YAML 파일을 통한 설정 관리: docker-compose.yml 파일을 이용하여 환경을 정의
- 서비스 간 네트워킹 자동 설정: 서로 다른 컨테이너 간 통신을 쉽게 할 수 있음
- 로컬 개발 환경 구성 용이: 개발 및 테스트 환경을 쉽게 셋업 가능
설치하기
- Docker Compose는 Docker가 설치되어 있으면 기본적으로 포함되어 있음
-
확인하려면 다음 명령어를 실행하면 됨!
docker-compose --version
- 만약 설치되지 않았다면, 공식 문서를 참고하여 설치할 수 있음
예제
-
Django + PostgreSQL을 실행하는
docker-compose.yml
파일 예제version: '3.8' services: web: image: python:3.9 container_name: django_app working_dir: /app volumes: - .:/app ports: - "8000:8000" depends_on: - db command: > sh -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000" db: image: postgres:15 container_name: postgres_db environment: POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword POSTGRES_DB: mydatabase ports: - "5432:5432" volumes: - pg_data:/var/lib/postgresql/data volumes: pg_data:
-
설명
- web 서비스 : Django 애플리케이션을 실행
- db 서비스 : PostgreSQL 데이터베이스 실행
- volumes : 데이터베이스 데이터를 지속적으로 유지
명령어
실행
-
docker-compose.yml 파일이 있는 디렉토리에서 다음 명령어를 실행하면 모든 서비스가 시작됨
docker-compose up -d
실행 확인
-
실행 중인 컨테이너를 확인
docker-compose ps
컨테이너 로그 확인
docker-compose logs -f web
모든 서비스 중지 및 삭제
docker-compose down
환경변수 파일 사용하기
- 환경 변수를 .env 파일에서 정의할 수도 있음
.env 파일 예제
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
POSTGRES_DB=mydatabase
docker-compose.yml에서 사용
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
장점과 단점
장점
- 복잡한 다중 컨테이너 애플리케이션을 쉽게 관리
- 로컬 개발 환경을 빠르게 구축 가능
- 재사용 가능한 설정 (docker-compose.override.yml 지원)
- 네트워크 및 볼륨 관리를 자동화
단점
- 프로덕션 환경에서는 Kubernetes 같은 대체 솔루션이 더 적합할 수 있음
- 기본적으로 단일 호스트에서 실행됨 (멀티 노드 배포는 제한적)
💡Today I Thought
오늘의 체크리스트
- 알고리즘 코드카타 1문제
- SQL 코드카타 1문제
- SA 문서 초안 완성
개발 환경 구성: 공부가 필요한 부분이라 내일 하기로 함!- TIL 작성
회고
오늘은 SA문서 초안을 완성했다(ML 파트 제외). 아무래도 TIL 쓰고 ML파트 다 채워 놓고 오늘 공부 마무리 해야할 것 같다. 개발환경 구성까지 해서 내일은 개발 시작해야지 했는데, Docker 초보들에게는 너무 가혹한 일정이었던 걸로.. 일단 이미지 굽고 실행하는 것까지는 해놓고 협업 부분은 튜터님의 도움을 받던지 해서 진행하는 것이 좋지 않을까 생각한다🫠 휴,, 그래도 아직 우리가 정해놓은 일정대로 진행되고 있으니까 그나마 안심이다.
댓글남기기