Ruby 和 Rails 内部人士 docker

Ruby and Rails insider docker

我在 Rails 应用程序上有一个 Ruby 运行ning 正在使用 docker 构建。我 运行 docker-compose builddocker-compose up 命令没有问题。它按预期旋转图像和 运行s puma。

安装的 gem 只是 rails 6.1.5.1puma 5.6.4

这是 docker-compose up 的输出:

my_app   | ENVIRONMENT: development
my_app   | The Gemfile's dependencies are satisfied
my_app   | => Booting Puma
my_app   | => Rails 6.1.5.1 application starting in development
my_app   | => Run `bin/rails server --help` for more startup options
my_app   | Puma starting in single mode...
my_app   | * Puma version: 5.6.4 (ruby 3.0.4-p208) ("Birdie's Version")
my_app   | *  Min threads: 5
my_app   | *  Max threads: 5
my_app   | *  Environment: development
my_app   | *          PID: 9
my_app   | * Listening on http://0.0.0.0:3000
my_app   | Use Ctrl-C to stop

但是,如果我运行下面的命令:

docker-compose run --rm my_app rails db:drop db:create db:migrate;

我收到以下错误:

ENVIRONMENT: development
The Gemfile's dependencies are satisfied
Could not find rails-6.1.5.1 in any of the sources
Run `bundle install` to install missing gems.

如果我运行:

docker-compose run --rm my_app sh

它让我进入 shell 提示。从此提示中,我键入 rails --version it returns Rails 6.1.5.1 的正确版本。如果我 运行、rails db:drop,我会得到以下结果:

Could not find rails-6.1.5.1 in any of the sources
Run `bundle install` to install missing gems.

如果我 运行 gem list rails,它会显示 rails 个具有正确版本的库列表:

rails (6.1.5.1)
sprockets-rails (3.4.2)

有人遇到过这样的问题吗?

你能试试这个吗:

  1. 以本机方式在您的电脑上安装相应的 ruby 版本(没有 docker)
  2. 运行 bundle install 这将更新您的 Gemfile.lock
  3. 尝试通过 运行 docker-compose build --no-cache
  4. 再次构建您的图像