【问题标题】:Precompiled assets absent in the docker imagedocker 镜像中没有预编译的资产
【发布时间】:2016-05-26 23:23:05
【问题描述】:

我正在尝试使用 docker 运行简单的 Rails 应用程序。

取自数据容器“app”的源代码。 nginx 也使用“app”数据容器来服务器预编译的资产和静态文件。

但运行 'bundle exec rake assets:precompile' 后没有找到预编译的资产。

我在 Mac OS X 上使用带有 VirtualBox 的 docker(Docker 版本 1.10.1,内部版本 9e83765)。

docker-compose.yml

version: '2'
services:
  web:
    build: .
    command: bundle exec puma
    env_file: .env
    environment:
      - RACK_ENV=production
      - RAILS_ENV=production
    volumes_from:
      - app
    ports:
      - "3000:3000"
    links:
      - db

  nginx:
    image: nginx
    ports:
      - "80:80"
    volumes_from:
      - app
    volumes:
      - /app/public:/usr/share/nginx/html:ro
      - /app/config/deploy/nginx.conf:/etc/nginx/conf.d/default.conf

  db:
    image: postgres
    env_file: .env
    volumes_from:
      - data

  app:
    image: busybox
    volumes:
      - /myapp/app:/app:rw
  data:
    image: busybox
    volumes:
      - /myapp/data:/var/lib/postgresql/data

Dockerfile

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

WORKDIR /app
ADD . /app

RUN gem install bundler && bundle install --jobs 20 --retry 5 --without development test && rake assets:precompile

VOLUME /app/public

我也试过没有'VOLUME /app/public'

请告知可能是什么问题。

谢谢。

【问题讨论】:

    标签: ruby-on-rails docker docker-compose


    【解决方案1】:

    docker build 期间的卷为not mounted

    从安装了卷的容器运行rake assets:precompile 任务发布构建。

    此外,从 Docker 1.9 开始,您不再需要“数据卷容器”。 Volumes 可以独立存在。

    $ docker volume create --name=app_public
    $ docker run -v app_public:/public busybox sh -c "echo hello > /public/file.txt"
    $ docker run -v app_public:/public busybox sh -c "cat /public/file.txt"
    

    【讨论】:

    • 谢谢,你帮了大忙!
    • 我希望在映像中预编译资产,而不是在运行时创建。有没有办法做到这一点?
    • @codenoob 这就是 dockerfile 的用途。您可以使用映像构建阶段并将文件复制到后续的 nginx 基础映像
    • 谢谢马特。是的,这就是我想要做的,将资产构建到图像中。我看到在构建过程中编译的资产,但是当我运行它时它们不在容器中。到目前为止,我只能在之后将它们添加到容器中进行编译。
    • @codenoob copy from a stage
    猜你喜欢
    • 1970-01-01
    • 2014-07-12
    • 2023-03-09
    • 2012-01-09
    • 1970-01-01
    • 2011-12-31
    • 2012-11-08
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多