docker-compose 사용

박상은·2021년 8월 20일
0

🛢️ docker 🛢️

목록 보기
5/5

docker-compose

기존에 docker run으로 컨테이너를 생성할 때 옵션값들이 많이 지정되거나, 동시에 여러 컨테이너를 컨트롤하거나, 컨테이너들끼리 통신해야할 경우 사용하는것이 좋음

1. 예시

# 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

2. 실제사용

# 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/app

3. 실행명령어

docker-compose up --build

  • --build: 실행할 때 마다 새로 빌드하기 ( 변경사항적용 )

특정 형식에 맞춰서 컨테이너 이름이 자동적으로 생성됨

4. 비교

  • 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

위와 같이 옵션값을 줄줄이 넣는것보다 정해진 형태로 정리한 파일로 만들 수 있으며, 한줄짜리 명령어로 실행이 가능해진다.
다른 장점인 여러컨테이너 동시실행 및 종료, 컨테이너간 통신예시는 조금도 공부한후 추가할 예정

마무리

아직 많이 공부하지않아 사용안해본것들이 더많아서 더 공부하고 추가로 정리할 예정

참고한 사이트

  1. 인프런강의
  2. 전체적으로참고
  3. volume참고사이트
  4. docker이미지생성후테스트

0개의 댓글