shimgo
1/21/2017 - 6:53 AM

docker-compose up してもビルドしたDckerイメージからコンテナが起動しない

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からコンテナを起動できる。