도커 컴포즈를 사용하는 이유

여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 이를 테스트하려면 각 컨테이너를 하나씩 생성해야 한다. 예를 들면, 웹 어플리케이션을 테스트하려면 웹 서버 컨테이너, 데이터베이스 컨테이너 두 개의 컨테이너를 각각 생성해야 한다.

즉, 아래와 같이 두개의 run 명령어를 입력해야한다.

$ docker run --name wordpress_db -d mysql:8

$ docker run -d -p 8080:80 \
--link wordpress_db:mysql --name seunghwan_wordpress \
wordpress:latest

여러 개의 컨테이너로 구성된 어플리케이션을 구축하기 위해 run 명령어를 여러 번 사용할 수 있지만 각 컨테이너가 제대로 동작하는지 확인하는 테스트 단계에서는 이런식으로 일일히 여러개의 컨테이너를 실행하기는 번거롭다

매번 run 명령어에 옵션을 설정해 CLI로 컨테이너를 생성하기보다는 여러 개의 컨테이너를 하나의 서비스로 정리해 컨테이너 묶음으로 관리할 수 있다면 좀 더 편리할 것이다

이런 측면에서 도커 컴포즈(Docker Compose)는 컨테이너를 이용한 서비스의 개발과 CI를 위해 여러 개의 컨테이너를 하나의 프로젝트로서 다룰 수 있는 작업 환경을 제공한다

도커 컴포즈 사용해보기

앞서 생성된 글에서 도커파일을 작성해 fastapi 를 실행할 수 있는 이미지를 만들었다!
해당 이미지와 도커 레지스트리에 있는 레디스이미지를 가져와 fastapi 서버를 가동시키는 동시에 redis 도 실행시켜보자

version: "1"
services:
  redis-db:
    image: redis:latest
    ports:
      - "6379:6379"

  fastapi-server:
    image: myimage
    ports:
      - "8080:8000"
    depends_on:
      - redis-db

현재 이미지가 내 도커에만 있는데 나중에 도커 레지스트리에 push 해보자!

이 도커 컴포즈 파일을 docker-compose up 명령어를 통해 실행시켜 두 컨테이너를 가동시킬 수 있다

그 결과 아래와 같이 레디스와 fastapi 관련 컨테이너가 실행중임을 확인할 수 있다


https://seosh817.tistory.com/387#%EB%8F%84%EC%BB%A4%20%EC%BB%B4%ED%8F%AC%EC%A6%88%EB%9E%80%3F-1
https://engineer-mole.tistory.com/221
https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose#%EB%8F%84%EC%BB%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%B9%8C%EB%93%9C

profile
기록용

0개의 댓글

Powered by GraphCDN, the GraphQL CDN