티스토리 뷰

CS/Cloud, Intra

[Docker] Docker Compose

앤오엔 2025. 3. 10. 23:58
Udemy Docker & Kubernetes : 실전 가이드 정리

 

2025.02.10 - [CS/Cloud, Intra] - Docker: 컨테이너를 왜 쓰는가? / Image & Container (1)

2025.02.17 - [CS/Cloud, Intra] - Docker: Image & Container 관리 (2)

2025.02.24 - [CS/Cloud, Intra] - Docker: Volume

2025.03.03 - [CS/Cloud, Intra] - Docker: Network

 

 

Docker Compose

정의 및 특징

다중 컨테이너 관리 도구

Dockerfile 을 대체하진 않음

하나의 구성파일로 동일한 호스트에서 한 개 이상의 컨테이너 환경을 설정함

한 docker compose 으로 정의된 모든 컨테이너들은 디폴트 네트워크가 생성됨

 

명령어

docker compose build : 이미지 빌드

docker compose up -d : detach모드로 컴포즈 실행

docker compose up --build: 이미지 재빌드하며 실행

docker compose down : 컨테이너 종료 및 이미지 삭제 

docker compose down -v : volume 과 함께 컨테이너 삭제

 

 

 

docker-compose.yaml 예제

## docker-compose.yaml (example)

services: # contaner
  mongodb:
    image: 'mongo'
    volumes:
      - data:/data/db
    # container_name: 원하는 컨테이너 이름
    # environment:
    #  KEY: value
    env_file:
      - <path>
  backend:
    build: ./backend # dockefile 이 있는 경로, 코드 변경이 있을 때마다 리빌드
    # build:
    #   context: ./backend
    #   dockefile: Dockerfile # dockerfile 이름
    #   args:
    #     some-arg: value
    ports:
      - '80:80'
    voluems:
      - logs:/app/logs
      - ./backend:/app # 바운드 마운트
      - /app/node_modules # 익명 볼륭
    env_file:
      - ./env/backend.env
    depends_on: # 서비스 의존성
      - mongodb
  frontend:
    build: ./frontend
    ports:
      - '3000:3000'
	volumes:
      - ./frontend/src:/app/src
    stdin_open: true # 개방형 입력 연력 (docker run 에서 -i)
    tty: true # 터미널 연결 (docker run 에서 -t)
    depends_on:
      - backend # backend가 시작되어야 frontend 시작


volumes: # 명명된 볼륨
  data:
  logs:

 

 

 

※ 최신 docker version 에서는 version 을 명시하지 않아도 됨
cf. https://forums.docker.com/t/docker-compose-yml-version-is-obsolete/141313

 

 

 

유틸리티 컨테이너

 

ENTRYPOINT

 

권한 & Linux

'CS > Cloud, Intra' 카테고리의 다른 글

[Docker] AWS에서 컨테이너 배포하기 (1) - EC2  (0) 2025.03.24
[Docker] Network  (0) 2025.03.03
[Docker] Volume  (0) 2025.02.24
댓글