地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

docker-compose.yml 3.7 メモ

既存のメイン機能と3.7とか比較的新しい部分のメモ

build

dockerfileを指定することが可能でdevやらstagingやらでDockerfileという名称以外を指定することが可能 argsは辞書形式で環境変数を指定してビルドできる

version: "3.7"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1

cache_from

3.2から登場 dockerの持つレイヤキャッシュを使用することができる。 cacheに指定する際はリストで指定ができる。ヒットしない場合は次のイメージを評価してくれるようです。

build:
  context: .
  cache_from:
    - alpine:latest
    - corp/web_app:3.14

SHM_SIZE

/dev/shmをコンテナから使用できるようにするオプション。 io性能が求められるケースで使用。

build:
  context: .
  shm_size: '2gb'

REPLICAS

コンテナの実行数を指定

version: "3.7"
services:
  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 6

DEPENDS_ON

コンテナ間の起動の際の起動順の依存関係を指定 DB => アプリケーションのような起動順を設定できる

version: "3.7"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

RESTART_POLICY

コンテナの状態を設定しコンテナが終了した際にリスタートするかを設定

version: "3.7"
services:
  redis:
    image: redis:alpine
    deploy:
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 120s

DEVICE

ホストのデバイスをコンテナ内から使用

devices:
  - "/dev/ttyUSB0:/dev/ttyUSB0"

ENV_FILE

ファイルから環境変数を取得する際に使用 secret情報などをこちらに書き込むなどの用途

env_file:
  - ./common.env
  - ./apps/web.env
  - /opt/secrets.env

extra_hosts

/etc/hostsに追記する情報を追記する。 docker-composeのネットワーク外のホストなどを追記しておく子が可能

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229"

LOGGING

--log-driverで指定したdocker runのオプションの内容を指定

logging:
  driver: syslog
  options:
    syslog-address: "tcp://192.168.0.42:123"