Docker-Composeとは?


Docker-Composeとは?


複数のコンテナからなるサービスを自動的に構築して実行することで管理を簡素化し、複数のコンテナ設定内容を1つのyamlファイルに集約して使用できます.composeファイルを準備してコマンドを1回実行するだけで、そのファイルから設定を取得し、すべてのコンテナサービスを実行できます.

Docker-合成デフォルトコマンド


実行:docker-compose up中指:docker-compose stop実行しながら構築(サービス開始前にイメージを再作成):docker-compose up --build

Docker-合成の使用方法

  • コンテナのDockerfileをそれぞれ記入する.
  • docker-compose.ymlを記述し,独立容器の実行定義をそれぞれ実施する.
  • docker-compose upクマンはdocker-composeを実行する.ymlとして定義されたコンテナを起動します.
  • Docker-compose.ymlファイル

    version: '3.5'
    services:
      mockserver:
        build: mockserver
    		# mockerserver 폴더 안에 사용할 Dockerfile이 있음
        ports: ['8001:8000']
    		# 호스트 OS 8001 <= mockserver 컨테이너 포트 8000
        volumes:
          - './mockserver/public:/home/public'
          - './mockserver/server.py:/home/server.py'
      web:
        build:
          context: .
          dockerfile: web/Dockerfile
    			# web 폴더 안에 사용할 Dockerfile이 있음
          cache_from:
            - eu.gcr.io/tmrow-152415/electricitymap_web:production
            - eu.gcr.io/tmrow-152415/electricitymap_web:staging
            - eu.gcr.io/tmrow-152415/electricitymap_web:latest
        image: eu.gcr.io/tmrow-152415/electricitymap_web:latest
    		# 베이스 이미지
        command: npm run server-dev
    		# 이 서비스가 올라올 때 dockerfile의 CMD를 무시하고 npm run server-dev가 실행됨
        depends_on: ['mockserver']
    		# web이 올라오기 전에 mockserver가 먼저 올라와야 함
        environment:
          - NODE_ENV=development
        ports: ['8000:8000']
    		# 호스트 OS 8000 <= web 컨테이너 포트 8000
        volumes:
          - './config:/home/config'

    - build


    Dockerfileがサービスイメージを生成するパスを保存します.

    - ports


    ホストOSとコンテナのポートをバインドします.
    引用符とともに文字列として指定する必要があります.
    フォーマットは「host:container」または「container」
    露出するポートマッピングの部分を示します.
    バインドするホストの外部ポートとコンテナの内部ポートを指定します.

    - image


    docker-composeで基礎画像を指定します.

    - command


    このサービスをアップロードするときにDockerfileのCMD文を無視して実行するコマンドを設定します.

    - depends_on


    サービス間の依存関係順にサービスを開始します.A: depends_on: -BAが適用される前に、Bが先に来るべきです.

    - environment


    コンテナの環境変数を指定します.

    Dockerfileファイル

    FROM python:3.8-alpine
    WORKDIR /home
    EXPOSE 8000
    ADD server.py server.py
    CMD cd public && python ../server.py

    - EXPOSE


    ホストOSにはポートを公開せず、コンテナにのみポートを公開する.

    - ADD


    画像にファイルを追加します.

    - CMD


    コンテナの起動時にスクリプトまたはコマンドを実行します.