ローカル環境用の設定をdocker-compose.override.ymlに書く

公開日時

以前、docker-composeでmysqlの検証環境を作った

この時はdocker-compose.yml内にポート設定を直接書いていたが、

例えば複数人で開発をする際に各自で異なるポート番号を利用したい場合、docker-compose.override.ymlが使える。

override.ymlに記述した設定はdocker-compose up時に自動で読み込まれ、該当の設定が上書きされる。

# docker-compose.yml
version: "3"
services:
  datastore:
    image: busybox
    volumes:
      - db_data:/var/lib/mysql
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: pass
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:

例: コンテナの3306ポートをローカルの3307ポートに割り当てたい場合

# docker-compose.override.yml
version: "3"
services:
  db:
    ports:
      - 3307:3306

docker-compose.override.yml自体は.gitignoreに追加してリポジトリ管理対象からは外し、docker-compose.override.yml.sampleをコミットしておく。

あとは各自の初期構築時にコピーして利用する。

cp docker-compose.override.yml.sample docker-compose.override.yml

参考


Related #docker

docker-credential-desktop.exe not installed or not available in PATH

rm ~/.docker/config.jsonしたら起動できた

Cloud Datastoreのローカル環境をDockerで構築する

CloudDatastoreエミュレータとgoogle-cloud-guiの環境を構築

Extension fieldsを使ってdocker-composeのコンテナ設定を共通化する

Railsコンテナ設定を共通化して、commandだけそれぞれで変えるようにした

docker-composeコマンドのエイリアスを作る

dcコマンドを置き換えた

Dockerでpt-query-digestを使う

コンテナのおかげで手軽にslowlog分析ができるようになった

mysqld: [Warning] World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.

windowsだとvolume mountすると777になるのでDockerfileを作ってcopyするようにした