docker-compose

cabbage·2023년 1월 23일
0

기타

목록 보기
25/26

docker-compose

  • 여러 개의 도커 컨테이너를 실행시키는 애플리케이션을 정의하는 도구이다.
  • docker-compose.yaml 파일을 사용해 애플리케이션의 서비스들을 구성한다.
  • yaml 파일로 여러 개의 도커 내부 속성을 설정하고, yaml 파일을 실행해 여러 개의 도커를 한번에 실행한다.

Dockerfile과 docker-compose.yaml

  • docker-compose.yaml 파일을 생성하고 그 안에 서비스들을 정의한다.
  • 여기서 서비스는 간단하게 도커 컨테이너라고 볼 수 있다.
  • Dockerfile은 각 도커 컨테이너마다 존재해야 한다.

예를 들어 두 Dockerfile이 있다.

  • express 서버를 구동하기 위한 이미지를 생성하긴 위한 Dockerfile
  • mongoDB 서버를 구동하기 위한 이미지를 생성하기 위한 Dockerfile.mongo

Dockerfile

FROM node:14

COPY ./package.json /myfolder/
COPY ./yarn.lock /myfolder/
WORKDIR /myfolder/
RUN yarn install

COPY . /myfolder/
CMD yarn start:dev

Dockerfile.mongo

FROM mongo:5

Dockerfile을 구성한 후 docker-compose.yaml 파일을 작성한다.

docker-compose.yaml

version: "3.7"

# 컨테이너들
services:
  # express 서버 구동 컨테이너 이름
  my-backend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 4000:4000

  # mongoDB 서버 구동 컨테이너 이름
  my-database:
    build:
      context: .
      dockerfile: Dockerfile.mongo
    ports:
      - 27017:27017
  • services
    • 각각의 도커 컨테이너에 적용되는 구성요소를 포함함
    • 내부에 도커 컨테이너 이름 my-backend, my-database를 설정함
  • context
    • Dockerfile을 포함하는 디렉터리 경로
    • Dockerfiledocker-compose.yaml이 같은 경로에 위치함
  • dockerfile
    • 도커 이미지 생성을 위한 Dockerfile 지정
  • ports
    • 호스트 OS와 도커 컨테이너의 포트를 바인딩
    • 호스트 포트 4000을 express 서버 컨테이너 포트 4000으로 바인딩(포트포워딩)
    • 호스트 포트 27017을 mongoDB 서버 컨테이너 포트 27017로 바인딩(포트포워딩)

이미지 빌드 후 컨테이너 실행하기

docker-compose build를 사용해 도커 이미지를 빌드한다.

docker-compose build

docker-compose up를 사용하면 docker-compose build로 빌드한 두 개의 이미지가 동시에 실행된다.

docker-compose up

결과적으로 docker-compose로 빌드한 express 서버 구동 컨테이너와 mongoDB 서버 구동 컨테이너가 동시에 실행된다.

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글