docker-compose間でボリューム共有
めも。前任者から引き継いだ趣味プロジェクトがdocker-composeでなにひとつローカル環境が立ち上がれないぶん投げだったので対応してみてるやつ。別docker-composeで、リポジトリAから参照/保存/更新してるelasticsearchをリポジトリBから参照するみたいな感じで、やりたかったことはボリュームの共有
マウントでホスト側のファイルパス書いてしまうような記述でもおそらく要求を満たすことはできるのだろうが、一応別リポジトリなので謎定義になるのがあれなのと、どうせなら名前付きボリュームでパスなど関知せずに済ませたい。と思ったら external
なるいい感じのオプションあった
https://docs.docker.com/compose/compose-file/#external
リポジトリA、B共に同じvolumes指定
services: ... es: image: docker.elastic.co/elasticsearch/elasticsearch ports: - 9200:9200 volumes: - esdata:/usr/share/elasticsearch/data volumes: esdata: external: true
ローカルにボリュームがない場合先に作る
ERROR: Volume esdata declared as external, but could not be found. Please create the volume manually using `docker volume create --name=esdata` and try again.
$ docker volume create --name=esdata esdata
volumesはバージョン3.2から少し凝った記述もできる模様。tmpfsとかはあんまり用途なさそうだけど… https://docs.docker.com/compose/compose-file/#long-syntax-3
今回は小規模&複雑でなし構成なのでリポジトリ一つでモノリシックに詰め込む方針を推したい感想はあるけどさておき動作させてく