【发布时间】:2020-07-17 04:25:32
【问题描述】:
我有一个包含 docker-compose 命令的脚本文件
bootstrap.sh
set -e
#Building docker image
docker-compose build
#Creating Database
docker-compose run --rm app bundle exec rails db:create
#Running Migration
docker-compose run --rm app bundle exec rails db:migrate
#Seeding Database. Running this command twice will throw an error and will terminate the execution
docker-compose run --rm app bundle exec rails db:seed
#Starting Docker containers
docker-compose up
这里bundle exec rails db:seed 命令应该每个数据库只运行一次。当我第一次运行 sh bootstrap.sh 时,它会正常工作,但随后运行 sh bootstrap.sh 将失败,因为我试图为同一个数据库播种两次。
所以,即使播种失败,我也需要一种返回成功的方法,以便我的 docker 容器启动。
例如。 docker-compose run --rm app bundle exec rails db:seed || true 类似这样的东西。当传递给 docker-compose 的命令失败时是否可以返回 true?
【问题讨论】:
-
您可以尝试使用
0退出的一件事。docker-compose run --rm app bundle exec rails db:seed ; exit 0"你的命令应该可以正常工作docker-compose run --rm app bundle exec rails db:seed || true -
@Adiii 没用。
标签: ruby-on-rails docker docker-compose