개인공부/도커공부

Docker-Compose

소소한필통 2025. 3. 10. 00:10

Docker Compose

what is docker compose

  • 여러개의 docker build와 docker run을 정의해 놓은 파일.
  • 다중 컨테이너 환경에 유리함
  • 단 dockerfile은 있어야 도커파일, 이미지, 컨테이너을 대체하지 못함
  • 하나의 호스트에서 사용하기 적합함

how to use it

version:"3.8" -> docker compose의 버전으 의미
services:   -> 3개의 컨테이너를 사용할것을 정의
  mongodb:
      image: 'mongo'
      volumes:
          - data:/data/db

      -> 아래 두개는 동일한 의미를 가짐. 실제로 여기서 명시적으로  수도있고 env_file로 파일을 지정해서 할수도있음 
      environment:
          - MONGO_INITDB_ROOT_USERNAME: max
          - MONGO_INITDB_ROOT_PASSWORD: secret
      env_file:
        - ./env/mongo.env
      -> 네트워크는 따로 명시할 필요없음. docker compose가 해당 미지들에 서비스에 대한 네트워크를 만듬
    -> 명시적으로 하고 싶을 경우에는 아래와 같이 네트워크를 써도됨
      net_works:

  backend:
      build: ./backend
      volumes:
          - logs:/app/logs
          - ./backend:/app
          - /app/mode_modules
      -> 아래의 서비스가 실행되고 이번 서비스가 실행될  있도록하는 docker-compose만의 기능
      depends_on:
          - mongodb
  frontend:
      build: ./frontend
      ports:
          - '3000:3000'
    volumes:
        - ./frontend/src:/app/src
    stdin_open: true
    tty : true
    depends_on:
        - backend
-> 명시된 볼륨은 services와 동일한 선상에 volumes를 만들고 자식에 명시된 볼륨명을 넣어야함. 익명, 바인드볼륨은 아님
volumes:
    -data:
    -logs:
  • services : 아래의 사용할 컨테이너를 정의하기위한 부모(서비스)

  • image : 해당 컨테이너에서 사용할 이미지를 정의

  • ports : 외부에서 들어올떄 사용할 포트와 내부에서 사용할 포트 정의

  • Volumes: \

    • 명시된 볼륨은 services와 동일한 선상에 volumes 정의 필요. 다른 container에서도 사용가능하므로.
    • 익명이나, binding 볼륨은 사용할 필요 x -> 해당 컨테이너에 종속되어있기에
  • Build : 도커파일위치를 명시

    • context : 도커폴더 위치
    • dockerfile : 도커파일명

docker compose build

  • 위 명령으로 통해서 build만 다시하고 실행되고 있는 프로세스에 영향은 없음

'개인공부 > 도커공부' 카테고리의 다른 글

도커 다중 컨테이너 구성  (0) 2025.03.10
도커 네트워크 공부  (0) 2025.03.10