入門docker 復習(7)

プロダクションでの活用

オーケストレーションツール

オーケストレーションツールとは

  • 複数のDockerを扱うための技術
  • 主に以下の機能をもち、本番のワークロードに必要な機能を備えている
    • Dockerの管理/自動復旧
    • ネットワークの管理
    • オートスケール

代表的なオーケストレーションツール

docker-compose

概要

  • docker-composeはローカルでDockerのオーケストレーションを行うツール
  • DockerのビルドからNetworkやVolumeの管理をコードベースで定義して行う

サンプル

version: '3.7'

services:
  nginx:
    build:
      context: .
      dockerfile: docker/nginx/Dockerfile
    volumes:
      - ./public:/var/www/html/public:ro
    ports:
      - 8080:80
    environment:
      PHP_HOST: app

  app:
    build:
      context: .
      dockerfile: Dockerfile
    env_file:
      - .env.example
    # volumes:
    #   - .:/var/www/html:cached

  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql:delegated
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    ports:
      - 13306:3306
  • version

    • docker-composeのバーション
    • こだわりがなければ最新を記述
  • services

    • 起動するコンテナの定義
    • ngix,app,mysqlを定義
  • image

    • コンテンを起動するDockerImageを指定
  • build

    • docker buildの実行情報
    • この情報をもとにDockrをビルドし、ビルドしたイメージを使用してコンテナを起動する
    • imageまたはbuildどちらかを記述
  • volumes

    • ボリュームのマウントを行う
  • ports

    • ポートの解放を行う
    • 左にホスト、右にコンテナのポートを指定する
  • environment

  • env_file

    • ファイルに記載された環境変数を読み取り、コンテナに定義する
  • command

    • Dockerfileで定義されているCMDの上書きを行う

docker-composeのコマンド

  • up

    • カレントのdocker-compose.yamlを参照してdocker-composeの起動
      • docker-compose up
  • down

    • カレントのdocker-compose.yamlに紐づいているContainerとNetworkを削除
      • docker-compose down
    • イメージも削除
      • docker-compose down --rmi all
  • rm

    • Volumeを削除
      • docker-compose rm