docker-compose up してもビルドしたDckerイメージからコンテナが起動しない
以下のようにしてrailsコンテナを実行してみてもビルドした内容が反映されなかった。
docker-compose build rails
docker-compose -p myapp up rails
docker-compose build railsによって作られるDockerイメージ名はdocker-compose.ymlの
imageで指定されていない限りは、docker-compose.ymlがあるフォルダ名_railsとなる。
一方-pオプションでプロジェクト名を指定した場合にはプロジェクト名_railsとなる。
このため、一度-pオプションでコンテナを起動していると、プロジェクト名_railsイメージが作られる。
次のdocker-compose upからはこのイメージが使われ、いくらdocker build railsをしてもそのイメージ名はフォルダ名_railsとなるため、docker-compose upでは使用されなくなる。
これを回避するためにはdocker-compose.ymlに以下のように記述する。
rails:
build: containers/rails
image: myapp_rails:tag
imageを指定することでイメージがあればそれを使い、なければbuildし、さらにbuildも指定されていなければpullしようとする。
あとは常にdocker-compose build railsとすればイメージ名がimageで指定したものに固定されるため、-pオプションを指定しても固定のimageからコンテナを起動できる。