Bar*_*ski 5 ruby-on-rails ruby-on-rails-4 docker boot2docker docker-compose
作为平台迁移的一部分,我正在尝试在本地生产我的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
Run Code Online (Sandbox Code Playgroud)
这是我的 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
Run Code Online (Sandbox Code Playgroud)
该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
运行并在另一个选项卡中运行,则所有资产的文件都将消失.
在构建期间容器不太可能是只读的,那么它会是什么呢?
您可以通过从本地文件夹安装的卷来隐藏容器文件夹。/myapp
.
当您要挂载时,您需要确保所需的文件位于本地文件夹内。当您不安装该文件夹时,这些文件将在您的映像上可用。
效果类似于 Linux 系统:当文件夹中有文件/my/folder
并且将磁盘挂载到同一文件夹时,原始文件将被隐藏。相反,该磁盘中的文件是可见的。
归档时间: |
|
查看次数: |
622 次 |
最近记录: |