gpt4 book ai didi

ruby - 使用单独的本地 gemspec 运行 docker 镜像

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:01 25 4
gpt4 key购买 nike

目前我们有一个 Dockerfile 来创建我们的测试图像。

FROM ruby:2.4

USER root

ENV LOCAL_GEM_PATH ./../qa-common/

RUN /bin/bash -l -c "gem install nokogiri -v 1.8 --no-ri --no-rdoc"


COPY Gemfile* /tmp/
COPY qa-common $LOCAL_GEM_PATH
WORKDIR /tmp

#================================================================
# Installs gems . Put frequently changed commands (COPY, ADD)
# after this as section as much possible to insure a quick build
#================================================================

RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
RUN /bin/bash -l -c "bundle install"

COPY . /usr/src/app
WORKDIR /usr/src/app

CMD ["-T"]

ENTRYPOINT ["bundle", "exec", "ruby", "bin/run_tests_from_queue.rb"]

我们遇到了一个错误,Dockerfile 中的 bundle install 找不到 qa-common gem(这是我机器上带有 .gempspec 的本地存储库)

通常没有 docker,当前项目的 gemfile 指定我们对 qa-common 所做的更改可以在我们的本地机器上进行测试

gem 'qa-common', :path => local_gem_directory

我们所做的一切都是为了阻止这个包安装,因为它要么找不到 gem/gemspec,要么因为 qa-common 在测试目录(Dockerfile 所在的位置)之外。

这个问题的最佳实践或解决方案是什么,以便当我们创建一个图像来运行依赖于这个 qa-common gem 的测试时,我们可以在我们的机器上使用本地 qa-common 版本来测试我们对 qa 的更改-common 没有破坏任何东西?

最佳答案

我一直在处理一个非常相似的问题,并且认为这对我有用:

gem 文件

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem_path = ENV.fetch('LOCAL_GEM_PATH', '.')

gem 'my_personal_gem', path: File.join(gem_path, 'my_personal_gem')

然后您可以将 LOCAL_GEM_PATH 设置为包含 gem 的目录。

希望这对您有所帮助。

关于ruby - 使用单独的本地 gemspec 运行 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52503356/

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