도커 컴포즈

wangjh789·2022년 8월 25일
0

docker

목록 보기
16/25

도커 컴포즈는 다중 컨테이너 설정을 손쉽게 하는 도구이다.
docker build , docker run 명령을 대체할 수 있다.

도커 컴포즈에선 다중 컨테이너 하나하나를 서비스 라고 부른다.
서비스가 사용할 포트, 환경변수, 볼륨, 네트워크 를 지정할 수 있다. 이는 도커 명령어로 가능하다.

version: '3.8'

services:
  mongodb:
    image: 'mongo'
    volumes:
      - data:/data/db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=max
      - MONGO_INITDB_ROOT_PASSWORD=secret
    # env_file:
    #   - ./env/mongo.env
    # networks:
    #   - goals-net
  backend:
    build: ./backend
    # build:
    #   context: ./backend
    #   dockerfile: Dockerfile
    #   args:
    #     - name=value
    ports:
      - "80:80"
    volumes:
      - 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 # -i 를 의미
    tty: true  # -t 를 의미
    depends_on:
      - backend



# 뵬륨의 key를 다시 명시하는 이유는 명명된 볼륨을 식별하기 위함
volumes:
  data:
  logs:

도커 컴포즈는 서비스들을 default로 --rm 를 사용한다.
(도커 컴포즈 자체는 attached 모드로 작동한다.)
그리고 도커 컴포즈를 사용하면 특정된 모든 서비스에 대해 새 환경을 자동으로 생성하고 그 네트워크로 묶는다.

docker-compose up -d 으로 dettach 모드로 시작하고 docker-compose down으로 중지할 수 있다. (이때 명명된 볼륨은 살아있게 되는데 이를 삭제하려면 docker-compose down -v 를 사용하면 볼륨까지 깨끗하게 삭제할 수 있다.)

backend 의 경우 우리가 빌드한 이미지로 도커 컴포즈를 구성해야 한다.
build의 value로 도커파일이 있는 곳으로 지정하거나 더 길게 작성할 수 있다.
context 는 도커파일을 보고 이미지를 빌드하는데 필요한 파일이 존재하는 디렉토리를 의미한다.

depends_on 는 도커컴포즈에만 있는 명령이다. 도커 컴포즈는 동시에 여러 컨테이너가 생성되는데 이때 순서가 필요한 경우 사용한다.

도커컴포즈는 이미지가 존재한다면 이미지를 재사용한다. 만약 build를 강제하고 싶다면 docker-compose builddocker-compose up --build를 사용하면 된다.

profile
기록

0개의 댓글