
기존에 docker run으로 컨테이너를 생성할 때 옵션값들이 많이 지정되거나, 동시에 여러 컨테이너를 컨트롤하거나, 컨테이너들끼리 통신해야할 경우 사용하는것이 좋음
# docker-compose.yml
# docker-compose 버전명시
version: "3"
# 사용할 image들 즉, 생성할 컨테이너
services: 
  # 생성할 컨테이너 이름... 하지만 조금 다른 이름으로 생성됨
  <container-name>:
    # 컨테이너 생성에 사용할 이미지
    image: node:10
    # WORKDIR ( -w )
    working_dir: /usr/src/app
    # 포트포워딩 ( -p )
    ports:
      - 3000:3000
    # docker build
    build: 
      # 사용할 Dockerfile위치
      context: ./
      # 사용할 Dockerfile이름
      dockerfile: Dockerfile.dev
    # volume지정 ( -v )
    volumes: 
      # node_modules는 컨테이너의 workdir에서 사용
      - /usr/src/app/node_modules
      # 이외에 모든 파일 참조
      - ./:/usr/src/app# docker-compose.yml
version: "3"
services: 
  my-node:
    image: node:10
    working_dir: /usr/src/app
    ports:
      - 8080:8080
    build: 
      context: ./
      dockerfile: Dockerfile.dev
    volumes: 
      - /usr/src/app/node_modules
      - ./:/usr/src/appdocker-compose up --build
--build: 실행할 때 마다 새로 빌드하기 ( 변경사항적용 )특정 형식에 맞춰서 컨테이너 이름이 자동적으로 생성됨
docker-compose를 사용안했을경우
1. docker build -f Dockerfile.dev -t ghksaud55/node ./
2. docker run -d -p 8080:8080 --name my-node -t/usr/src/app -v /usr/src/app/node_modules -v $(pwd):/usr/src/app node:10
docker-compose를 사용할경우
docker-compose up --build
위와 같이 옵션값을 줄줄이 넣는것보다 정해진 형태로 정리한 파일로 만들 수 있으며, 한줄짜리 명령어로 실행이 가능해진다.
다른 장점인 여러컨테이너 동시실행 및 종료, 컨테이너간 통신예시는 조금도 공부한후 추가할 예정
아직 많이 공부하지않아 사용안해본것들이 더많아서 더 공부하고 추가로 정리할 예정