gpt4 book ai didi

ruby-on-rails - Rake 任务似乎不会在 Docker 容器中写入文件

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

作为平台迁移的一部分,我正在尝试在本地生产中运行我的 Rails 应用程序。我将 Docker 与 Docker Compose 一起使用。

我遇到了 rake assets:precompile 的问题.看起来 docker 在构建过程中删除了生成的文件。

这是我的 Dockerfile

FROM ruby:2.2.2
RUN apt-get update -qq && apt-get install -y build-essential nodejs npm nodejs-legacy mysql-client vim
RUN mkdir /lunchiatto
ENV RAILS_ENV production
ENV RACK_ENV production
WORKDIR /tmp
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install --without production test
ADD . /myapp
WORKDIR /myapp
RUN bundle exec rake assets:clobber
RUN bundle exec rake assets:precompile --trace

这是我的 docker-compose.yml
db:
image: postgres:9.4.1
ports:
- "5432:5432"
environment:
RACK_ENV: production
RAILS_ENV: production
web:
build: .
command: bundle exec puma -C config/puma.rb
ports:
- "3000:3000"
links:
- db
volumes:
- .:/myapp
environment:
RACK_ENV: production
RAILS_ENV: production
docker-compose build命令运行良好。我也插入了 RUN ls -l /myapp/public/assets进入 Dockerfile rake assets:precompile前后一切似乎都很好。但是,如果我运行 docker-compose run web ls -l /myapp/public/assets使用 docker-compose up 构建后在不同的选项卡中运行,所有 Assets 的文件都消失了。

容器在构建期间不太可能是只读的,那可能是什么?

最佳答案

隐藏 容器文件夹 /myapp通过从本地文件夹挂载的卷 . .

当你想挂载它时,你需要确保所需的文件在本地文件夹中。当您不挂载该文件夹时,文件将在您的图像上可用。

效果类似于Linux系统:当你在文件夹/my/folder中有文件时并将磁盘安装到隐藏原始文件的同一文件夹中。相反,该磁盘中的文件是可见的。

关于ruby-on-rails - Rake 任务似乎不会在 Docker 容器中写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872948/

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