카테고리 없음

docker Compose 란 ?

1son 2026. 6. 3. 16:55

Docker = 도시락 통 

음식 (프로그램)을 도시락 통 (컨테이너)에 담으면, 어떤 컴퓨터에서도 똑같이 실행됩니다 

내 컴퓨터에선 되는데 왜 안되지? 문제를 해결해줌 

 


Docker Compose란 ? 

Docker Compose = 도시락 세트 

실세 서비스는 여러 프로그램이 함께 돌아감 

 

예를 들어 쇼핑몰 하나를 만들면, 

- 손님이 보는 화면 (프론트 엔트) 

- 주문을 처리하는 서버 (백엔드) 

- 상품 정보를 저장하는 데이터베이스 

 

쇼핑몰 = 프론트엔드 + 백엔드 + DB + 캐시 + ...

 

이 세가지가 동시에, 함께 실행되야함 

 

Docker Compose 는 이것들을 한 번에 켜고 끄게 해주는 도구 

이 모든 걸 하나의 파일로 정의하고, 명령어 하나로 실행 하는게 compose

 


핵심 요약 

여러 프로그램을 한 번에 실행하고 싶을 때, 설정 파일 하나에 다 적어두면, 

명령어 하나로 전부 켜고 끌 수 있게 해주는 도구 

 

docker compose up    # 전부 켜기
docker compose down  # 전부 끄기

 

 


docker-compose.yml 구조

services:
  web:                          # 서비스 이름 (자유롭게 지정)
    image: nginx                # 사용할 이미지
    ports:
      - "80:80"                 # 호스트:컨테이너 포트 매핑
    volumes:
      - ./html:/usr/share/nginx/html  # 파일 마운트
    depends_on:
      - app                     # app이 먼저 실행된 후 실행

  app:
    build: .                    # 현재 디렉토리 Dockerfile로 빌드
    environment:
      - DB_HOST=db              # 환경변수 주입
      - DB_PORT=5432
    restart: always             # 죽으면 자동 재시작

  db:
    image: postgres:15
    volumes:
      - db_data:/var/lib/postgresql/data  # 데이터 영속성

volumes:
  db_data:                      # 볼륨 선언

 

 

자주 쓰는 명령어 

docker compose up           # 실행 (포그라운드)
docker compose up -d        # 실행 (백그라운드, 실무에서 주로 사용)
docker compose down         # 종료 + 컨테이너 삭제
docker compose down -v      # 종료 + 볼륨까지 삭제 (DB 초기화)

docker compose logs -f      # 전체 로그 실시간 확인
docker compose logs app -f  # 특정 서비스 로그만

docker compose ps           # 실행 중인 서비스 상태 확인
docker compose exec app bash  # 컨테이너 안으로 직접 접속

docker compose build        # 이미지 다시 빌드
docker compose up --build   # 빌드 후 바로 실행

 

 

한 문장 요약 

: Docker Compose는 여러 서비스를 하나의 파일로 정의해서 명령어 하나로 전체 환경을 올리고 내리는 도구,  개발 환경 표준화와 온보딩 효율화에 바로 효과가 남