ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커 컴포즈
    BackEnd/도커 2021. 3. 24. 20:50

     

    상황1 . 아래와 같이 컨테이너를 실행하는데 설정해야할 요소가 많으면 명령어를 직접 쓰기 어려워진다.

    docker run -p 3000:3000 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app  이미지아이디

    상황2 . 여러가지 앱을 하나의 서비스로 묶어 실행하고자 할 수도 있다.


    이를 docker-compose.yml 을 정의해 해결할 수 있다.

     

    docker-compose.yml

    version: '2'
    services:
       db:
       image: mysql:5.7
       volumes:
          - ./mysql:/var/lib/mysql
       restart: always
       environment:
          MYSQL_ROOT_PASSWORD: wordpress
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: wordpress
       
       
       wordpress:
       image: wordpress:latest
       volumes:
          - ./wp:/var/www/html
       ports:
          - "8000:80"
       restart: always
       environment:
       	  WORDPRESS_DB_HOST: db:3306
       	  WORDPRESS_DB_PASSWORD: wordpress

     


    version docker-compose.yml 파일의 명세 버전

    docker-compose.yml 버전에 따라 지원하는 도커 엔진 버전도 다름

    version: '3'

    services 실행할 컨테이너 정의

    docker run --name django과 같다고 생각할 수 있음

    services:
      postgres:
        ...
      django:
        ...

    컨테이너에 사용할 이미지 이름과 태그

    태그를 생략하면 latest

    이미지가 없으면 자동으로 pull

    services:
       django:
          image: django-sample

    ports 컨테이너와 연결할 포트(들)

    {호스트 포트}:{컨테이너 포트}

    services:
      django:
         ...
         ports:
           - "8000:8000"

    environment 컨테이너에서 사용할 환경변수(들)

    - {환경변수 이름}:{값}

    services:
     mysql:
     ...
     environment:
     - MYSQL_ROOT_PASSWORD=somewordpress: '3'

    volumes 마운트하려는 디렉터리(들)

    {호스트 디렉터리}:{컨테이너 디렉터리}

    services:
       django:
           ...
       volumes:
          - ./app:/app

    restart 재시작 정책

    restart: "no"

    restart: always

    restart: on-failure

    restart: unless-stopped

    services:
       django:
       restart: always

    build 는 image 속성 대신 이미지를 자체 빌드 후 사용하려 할 때 사용한다.

    context 는 현재 docker-compose.yml 있는 위치 기준으로 도커 이미지를 구성하기 위한 파일, 폴더 위치를 말한다.

    빌드에 사용할 도커 파일 경로 명시한다.

    django:
        build:
           context: .
           dockerfile: ./compose/django/Dockerfile-dev

    docker-compose up 명령을 통해 안에 정의된 내용을 읽어 컨테이너를 생성한다.

    //실행
    docker-compose up
    
    //재실행
    docker-compose up -build
    
    //백그라운드에서 실행
    docker-compose up -d

    컨테이너 중지

    docker-compose stop

     

    컨테이너 종료 및 컨테이너 삭제 

    docker-compose down

     

    반응형

    'BackEnd > 도커' 카테고리의 다른 글

    도커 네트워크 관련 링크  (0) 2022.08.06
    도커 이미지 빌드 Dockerfile  (0) 2021.03.28
    도커 컨테이너 실행하기  (0) 2021.03.07
Designed by Tistory.