gpt4 book ai didi

ruby-on-rails - 在 rails docker 容器中找不到 rake-11.1.2

转载 作者:IT老高 更新时间:2023-10-28 21:24:00 27 4
gpt4 key购买 nike

我正在运行两个 docker 容器。一个带有rails,一个带有Postgres db。这是我的 docker-compose 文件:

# Docs: https://docs.docker.com/compose/compose-file/
version: '2'
services:
db:
image: postgres
environment:
- POSTGRES_PASSWORD=xxx

rails:
build: .
command: rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
links:
- db
depends_on:
- db

这里是 rails 应用程序的 Dockerfile:

FROM ruby:2.3

RUN apt-get update
RUN apt-get install -y build-essential nodejs

RUN mkdir -p /app
WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN gem install bundler && bundle install --jobs 20 --retry 5

COPY . ./

EXPOSE 3000

ENTRYPOINT ["bundle", "exec"]

CMD ["rails", "server", "-b", "0.0.0.0"]

当我运行 docker-compose up 时,一切正常,我可以通过 docker-machine 的 IP 地址连接到服务器。

当我尝试使用以下命令连接到容器时:

docker-compose run rails console

我收到此错误:

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

容器内的bundle install 没有任何效果,上面提到的gem肯定已经安装了。在其他堆栈溢出问题中提到我应该运行 bin/spring stop。于是我跑了:

docker-compose run bin/spring stop

然后它返回:

Spring is not running

我对 ruby​​/rails 和 docker 还是比较陌生。我希望有人可以在这里帮助我!提前致谢

PS:感谢对 Dockerfiles 的评论!

最佳答案

似乎是一个迟到的回应,但无论如何我都会回答。我有根据的猜测是您的 Gemfile.lock正在固定您的rake版本,这就是它提示的原因。如果您运行 docker build没有像您的 docker-compose.yml 中定义的音量你可以很容易地像这样结束。那就试试吧。

关于您的Dockerfile :如果您仅将其用于开发目的,那么这可能没问题。否则,您应该考虑使用不同的用户来运行它(使用 useradd 创建用户并相应地运行 RUN 任务等等)。您可能还想使用一些 bundler 功能,例如 --path=<path>选项。

关于ruby-on-rails - 在 rails docker 容器中找不到 rake-11.1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com