gpt4 book ai didi

ruby-on-rails - 为什么要将 Gemfile.lock 复制到 Docker 中,然后立即覆盖它?

转载 作者:行者123 更新时间:2023-12-01 04:41:11 24 4
gpt4 key购买 nike

为什么要复制Gemfile.lock , 运行 bundle install新建Gemfile.lock ,然后立即复制包含原始 Gemfile.lock 的当前目录并覆盖 Gemfile.lock是由 Bundler 在 Docker 容器中创建的吗?

还有为什么没有 EXPOSE 3000 你能侥幸逃脱?

https://docs.docker.com/compose/rails/#define-the-project

FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

这不是唯一这样做的地方。它也在这里完成,这似乎很官方。也许我错过了 Docker 的一个基本方面?

https://hub.docker.com/_/ruby/
COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .

最佳答案

更多的是猜测而不是答案,但有时您会在 Dockerfile 中订购步骤略有不同以改进缓存机制。当您更改应用程序中的内容时,它不太可能影响 Gemfile s,所以你不必做 bundle install在你改变一切之后。以这种方式对步骤进行排序可以避免执行 bundle install对于不影响 Gemfile 的应用程序更改s。

关于构建缓存的文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#build-cache

关于ruby-on-rails - 为什么要将 Gemfile.lock 复制到 Docker 中,然后立即覆盖它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083406/

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