Etc

TIL | Docker-compose 세팅 및 적용하기

Docker-compose

Docker compose란?

  • 다수의 컨테이너 운용을 용이하게 하기 위한 툴이다.
  • yaml 파일 형태로 작성되며, 다수의 컨테이너 실행 관리를 가능케 한다.
  • 일일이 커맨드를 입력하는 것이 아닌, 파일 하나로 docker 사용을 간편케 한다.
  • 간단하게 정리하자면, dockerfile로 컨테이너의 세팅환경을 만들어준 후 docker-compose.yml 파일로 컨테이너들을 관리해준다.

Docker-compose 세팅

docker-compose.yml 파일 세팅

# docker-compose.yml

version: "3" # 도커 컴포즈 버전
services: # 실행하려는 컨테이너들을 정의
  docker_compose_test: # 컨테이너 이름
    build: # build 옵션(이미지 구성)
      context: . # docker 이미지를 구성하기 위한 파일과 폴더들이 위치한 경로
      dockerfile: dockerfile.dev # 도커 파일이 어떤것인지 지정

    ports: # 포트 매핑 (로컬 포트 : 컨테이너 포트)
      - "3000:3000"
    volumes: # 로컬 머신에 있는 파일들을 매핑(docker volumne)
      - /src/app/node_modules
      - ./:/src/app
    stdin_open: true # react app을 off할때 사용되는 옵션이다.
  • 도커 볼륨을 사용하는 이유는 단순히 호스트 디렉토리에 있는 데이터를 특정 컨테이너에 실시간 반영한다는 목적이 아닌, 바로 컨테이너 내부 데이터의 보존이다. 컨테이너 내부에서 작업을 직접 진행하다가 컨테이너 자체가 사라졌을때 해당 데이터는 찾을 수 없게 된다. 하지만 해당 컨테이너를 호스트 디렉토리에 매핑시킴으로써 로컬에서 작업했을때 해당 소스 코드들이 컨테이너에 실시간으로 반영되고, 설사 컨테이너가 삭제되더라도 변경된 데이터는 호스트 디렉토리에 남게 되므로 데이터 보존을 가능케 한다.

docker-compose up

sudo docker-compose up --build
  • up 커맨드를 통해 컴포즈를 실행시킨다.
  • --build: 컨테이너를 띄우기 전, 이미지를 새로 생성하기 위한 키워드이다. 소스 코드가 수정이 되었을 경우, 이미지를 다시 빌드해야하기 때문에 웬만하면 써주는 것이 좋다.

결과