干草,在我的情况下,我解决了这个问题告诉docker执行一些bash命令 docker-compose.yml 。喜欢:
docker-compose.yml
在您的docker-compose中:
# your_app_path/docker-compose.yml ... web: build: ... command: bash -c "build-scripts/container/web" ...
当您的码头工人'ups'时, build-scripts/container/web 将被执行。
build-scripts/container/web
您的 Dockerfile ,将被召唤 docker-compose build ,你不应该在这个文件中执行命令。
Dockerfile
docker-compose build
创建 build-scripts/container/web ,有这个内容:
#!/bin/bash bundle check || bundle install bundle exec rake db:setup && \ bundle exec rails s -p 3000 -b '0.0.0.0' -P /tmp/rails.pid
你可以选择交换 rake db:setup 至 rake db:migrate 或类似的东西。
rake db:setup
rake db:migrate