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



docker rails中所述:



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

10-05 22:56
查看更多