gpt4 book ai didi

ruby-on-rails - 如果使用官方docker rails镜像,如何将自己的gem文件添加到Dockerfile?

转载 作者:行者123 更新时间:2023-12-02 18:42:15 25 4
gpt4 key购买 nike

Docker Hub上的官方Rails图像:

https://hub.docker.com/_/rails/

我创建一个类似Dockerfile的文件:

FROM rails:onbuild

ENV RAILS_ENV=production

ADD vendor/gems/my_gem /usr/src/app/vendor/gems/my_gem

CMD ["sh", "/usr/src/app/init.sh"]

我的init.sh
#!/bin/bash
bundle exec rake db:create db:migrate
bundle exec rails server -b 0.0.0.0

我的 gem 文件
...
gem 'my_gem', path: './vendor/gems/my_gem'
...

当我构建docker镜像时:
docker build -t myapp .

它说:
...
The path `/usr/src/app/vendor/gems/my_gem` does not exist.
The command '/bin/sh -c bundle install' returned a non-zero code: 13

默认路径是 /usr/src/app。如何在那里添加特殊文件?

最佳答案

docker ADD 将相对于正在构建的源目录(构建的上下文)添加<src>(当它是文件夹时,而不是URL)

因此,在执行docker build .时,您需要确保当前目录也是包含vendor/gems/my_gem的目录。

OP scho报告in the comments

After I changed to FROM rails:4.2.1, it worked.



docker rails中所述:

This image (rails:onbuild) includes multiple ONBUILD triggers which should cover most applications.
The build will COPY . /usr/src/app, RUN bundle install, EXPOSE 3000, and set the default command to rails server.



这意味着可能不需要ADD命令,并且与ONBUILD触发的COPY冲突。
这与使用rails:4.2.1不同,后者使用ADDCOPY保留Dockerfile规范(与ONBUILD触发器相对)。

关于ruby-on-rails - 如果使用官方docker rails镜像,如何将自己的gem文件添加到Dockerfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33686588/

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