docker 图像中缺少预编译资产
Precompiled assets absent in the docker image
我正在尝试 运行 使用 docker 的简单 Rails 应用程序。
从数据容器中获取的源代码'app'。 'app' 数据容器也被 nginx 用于服务器预编译资产和静态文件。
但在运行宁'bundle exec rake assets:precompile'之后没有找到预编译资源。
我在 Mac OS X 上使用 docker 和 VirtualBox(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
Docker文件
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'
请指教可能是什么问题。
谢谢。
在 docker build
期间成交量 not mounted。
运行 rake assets:precompile
任务 post 从装有卷的容器构建。
此外,从 Docker 1.9 开始,您不再需要 "data volume container"。 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"
我正在尝试 运行 使用 docker 的简单 Rails 应用程序。
从数据容器中获取的源代码'app'。 'app' 数据容器也被 nginx 用于服务器预编译资产和静态文件。
但在运行宁'bundle exec rake assets:precompile'之后没有找到预编译资源。
我在 Mac OS X 上使用 docker 和 VirtualBox(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
Docker文件
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'
请指教可能是什么问题。
谢谢。
在 docker build
期间成交量 not mounted。
运行 rake assets:precompile
任务 post 从装有卷的容器构建。
此外,从 Docker 1.9 开始,您不再需要 "data volume container"。 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"