Docker Compose를 왜 쓸까?
🔹 복잡한 실행 환경
컨테이너가 많아질수록 실행 명령어가 길어지고 복잡해짐
여러 컨테이너의 실행 순서와 네트워크 연결을 매번 수동 설정하는 불편함
🔹 쓰기 쉬움 // 선언적 설정으로 관리
docker-compose.yml 파일로 여러 서비스를 하나로 정의
한 줄 명령어로 전체 실행: docker-compose up
docker-compose 와 비슷한 오케스트레이션 도구지만 다른 기능들을 가진 Kubernetess도 있다!
쓰는 목적에따라서 알맞은걸 쓰면 됨
Docker Compose 명령어
🔹 docker-compose up -d
하나의 YAML 파일에서 여러 서비스 정의하고 한번에 실행하거나 종료할 수 있다. (로컬)
🔹 docker-compose down
각 서비스 간의 의존을 선언할 수 있어 컨테이너를 올바른 순서대로 실행 가능
+)
docker-compose top
docker-compose logs -f {compose container이름}
docker-compose exec {compose container이름}
Docker compose 의 장점
🔹 멀티 컨테이너 관리
하나의 YAML 파일에서 여러 서비스 정의하고 한번에 실행하거나 종료할 수 있다.
🔹 컨테이너 간 의존성 처리
각 서비스 간의 의존을 선언할 수 있어 컨테이너를 올바른 순서대로 실행 가능
🔹 네트워크 및 볼륨 설정 자동화
서비스들 간 기본 네트워킹이 자동으로 구성, 볼륨 관리도 가능
🔹 환경 설정 중앙화
환경 변수, 설정 파일 등을 한 곳에서 관리할 수 있어, 여러 컨테이너 설정을 통합하고 변경 사항 반영
Docker Compose 파일 구조
#version: '3.8' # docker-compose의 버전 정의
services: # 서비스(컨테이너) 정의
서비스이름: # 서비스 이름 (임의로 지정 가능)
image: 이미지명
container_name: 컨테이너이름 (선택사항)
ports:
- "호스트포트:컨테이너포트"
volumes:
- "호스트경로:컨테이너내부경로"
environment:
환경변수명: 값
networks:
- 네트워크명
networks: # 사용할 네트워크 정의
네트워크명:
driver: bridge (기본값)
volumes: # 사용할 볼륨 정의
볼륨명:
driver: local (기본값)
핵심 구성 요소 설명
services: 실행할 컨테이너 단위 (이름별로 정의)
image: 사용할 도커 이미지 (도커허브 또는 로컬 빌드 가능)
build: 직접 빌드할 디렉토리 경로 (이미지 대신 사용)
ports: 호스트:컨테이너 포트 매핑 (외부 접근 허용)
volumes: 호스트와 컨테이너 간 디렉토리 공유
environment: 컨테이너 환경변수 설정 (DB 초기 설정 등)
restart: 재시작 정책 (no, always, unless-stopped 등)
depends_on: 의존 관계 명시 (기동 순서 기준, 의존성 보장 X)
테스트로 간단한 docker compose파일을 작성해준뒤
docker-compose.yml
services:
likelion-backend-1:
image: likelion-backend
ports:
- 8082:8082
nginx 를 활성화해주고
default.conf
upstream spring_cluster {
least_conn; # 가장 적게 연결된 서버에 전달 (round-robin 대신)
server likelion-backend-1:8082 max_fails=3 fail_timeout=10s;
server likelion-backend-2:8082 max_fails=3 fail_timeout=10s;
}
server {
listen 80;
location / {
proxy_pass http://spring_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
listen: Nginx가 요청을 받을 포트
proxy_pass: 요청을 실제 서버로 전달하는 경로
두개의 컨테이너를 docker-compose 로 실행한 상태에서 이제
postman으로 간단하게 조회해보고
docker-compose logs -f
로그도 확인해보기
'Web Backend' 카테고리의 다른 글
Kubernetess (0) | 2025.04.07 |
---|---|
Docker Swarm (0) | 2025.04.07 |
Docker 네트워크 (3) | 2025.04.07 |
Kubernetess 시작하기 (0) | 2025.04.07 |
Docker (7) | 2025.04.07 |