Chl*_*loe 8 ruby-on-rails bundler docker
为什么要复制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
Run Code Online (Sandbox Code Playgroud)
这不是唯一这样做的地方。它也在这里完成,这似乎很官方。也许我错过了 Docker 的一个基本方面?
https://hub.docker.com/_/ruby/
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
Run Code Online (Sandbox Code Playgroud)
更多的是猜测而不是答案,但有时您对Dockerfiles 中的步骤的顺序略有不同,以改进缓存机制。当您更改应用程序中的内容时,影响 s 的可能性较小Gemfile,因此您不必bundle install在更改所有内容后执行 a 操作。以这种方式对步骤进行排序可以避免必须执行bundle install不影响 s 的应用程序更改Gemfile。
有关构建缓存的文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#build-cache
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |