docker问题导轨资产预编译boot2docker

我试图让我的容器(在boot2docker上运行)正确的资产编译。

我目前有一个泊坞窗图像数据库和Web应用程序容器。 我不知道为什么预编译的资产在成功构build后没有显示。

我的Dockerfile看起来像这样:

FROM ruby:2.2.0 RUN apt-get update -qq && apt-get install -y build-essential # Postgres support RUN apt-get install -y libpq-dev # Nokogiri support RUN apt-get install -y libxml2-dev libxslt1-dev # JS runtime RUN apt-get install -y nodejs ENV APP_HOME /app RUN mkdir $APP_HOME RUN mkdir $APP_HOME/tmp RUN mkdir $APP_HOME/log # Copy the Gemfile and Gemfile.lock into the image. # Temporarily set the working directory to where they are. WORKDIR /tmp ADD Gemfile Gemfile ADD Gemfile.lock Gemfile.lock # Install ruby dependencies RUN bundle install # Add app to container ADD . $APP_HOME # Add container working directory WORKDIR $APP_HOME # Expose puma port EXPOSE 3000 # Expose the assets directory VOLUME /app/public # Precompile js/scss assets RUN bundle exec rake assets:precompile # Run puma server CMD bundle exec puma -C /app/puma.rb 

泊坞窗,compose.yml

 db: image: postgres web: build: . volumes: - .:/app - /mnt/docker/app/public:/app/public links: - db environment: VIRTUAL_HOST: app.dev 

当我检查/mnt/docker/app/public没有什么:(。

您正在预编译您的Dockerfile中的资源,然而,随后将您的卷装入您的撰写文件中。 从撰写文件中删除- /mnt/docker/app/public:/app/public ,然后重新启动容器。

如果你想看看/ app / public中的内容,那就去做吧

 docker run -it --volumes-from=<APP_CONTAINER_NAME> <IMAGE> ls /app/public 

或类似的东西。

感谢迈克尔的帮助,我也必须改变命令的顺序。

在制作目录之前,我必须先进行资源编辑。

所以,像这样改变了:

 ... # Add container working directory WORKDIR $APP_HOME # Expose puma port EXPOSE 3000 # Precompile js/scss assets RUN bundle exec rake assets:precompile # Expose the assets directory VOLUME /app/public # Run puma server CMD bundle exec puma -C /app/puma.rb 

这是预期的行为?