昔やった案件の開発環境を作る必要がでまして
「docker-compose.ymlとDockerfileをgitで管理しているオレに死角はないぜ」
とか思ったんですけど、死角に落とし穴がバンバンでひどい目に会いました。
まぁ、見えてる穴に落ちたってのもありますが。
先に書いておくと、ハマったのは大体がボリュームの名前かぶりでした。
とある日のSlack
「開発環境復活。docker-composeだとデフォルトだとディレクトリ名ベースで名付けが行われるので同じディレクトリ名におかれた別プロジェクトでボリューム名が被る。結果、変なボリュームができて想定しているボリュームが使用されずににっちもさっちも行かなくなってた。
ボリューム全部削除して、COMPOSE_PROJECT_NAME環境変数で名付けのベースを変更して作り直して復活。」
参考: docker-composeで作成されるものの名前を明示的に指定する方法 – Qiita
前のSlackのヤツですが、今やってるプロジェクトと前のプロジェクトのdocker-compose.ymlがあるディレクトリ名が同じ今のプロジェクトの開発環境が死にました。昔のプロジェクトのほうも死んでました。
泣きながらとりいそぎ今の環境の方をbuildし直すじゃないですか? うまくいかないんだな、これが。
残っているボリュームが影響してbuidしてもにっちもさっちもいかなくなりますので、前にも書いている通り、残っているボリュームを削除してからbuildする必要があります。
あと、COMPOSE_PROJECT_NAME環境変数で名付けのベースを変更できるので.envでプロジェクト名などをベースにかぶらないように設定を入れておくのが吉です。
COMPOSE_PROJECT_NAME=old_project_name
新規開発だと基本的には最新バージョンで開発環境を作るじゃないですか。
FROM postgres:latest
とかDockerfileに書いて。
いいんですけど、そのままにしておくと後で環境を作り直すときに当時と違うバージョンが入って困るわけです。
完全に見えてる落とし穴なんですけど、ズッポリですよ。
ちなみに2019年8月中旬現在で11が入りました。そして当時のバージョンで作り直す。
FROM postgres:9.6
「失敗失敗」とか軽く思いながらno-cacheでbuildし直すじゃないですか? うまくいかないんだな、これが。
残っているボリュームが(以下略)
PostGISのバージョンがバンバン上がって過去パッケージが消えていくのでbuildで結構な頻度でひどい目にあってたり。
以上です。
ちゃんと(ベースの)イメージファイルを取っておけよって話ではある。
Tags: Docker