在Rails应用程序容器前使用专用代理容器

时间:2017-01-27 14:25:08

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

我在dockerizing Rails应用程序的过程中将其部署到生产环境之前。

我能够创建一个2容器(db + app)系统,现在我尝试添加一个代理容器(使用Nginx)在应用程序前面运行以提供静态资产。

我创建了一个基本容器,从nginx:1.11-alpine开始,配置如下

server {
  listen *:80;
  location / {
    proxy_pass http://app:3000;
  }
} 

我现在能够将浏览器指向http://0.0.0.0并获取根页,但是,静态资产(显然)没有提供,我也不知道如何继续。

我应该将静态资产从应用容器复制到代理容器吗?

我应该如何更新Nginx配置文件?

我的docker-compose.yml看起来像

version: '2'

volumes:
  postgres-data:
    driver: local

services:
...
  app:
    build: .
    command: bin/rails server -b 0.0.0.0
    ports:
      - 3000:3000
    links:
      - postgres:db
    depends_on:
      - postgres
  proxy:
    image: nginx:1.11-alpine
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf
    command: nginx -g 'daemon off;'
    ports:
      - 80:80
      - 443:443
    links:
      - app
    depends_on:
      - app

感谢。

1 个答案:

答案 0 :(得分:0)

一个选项可能是通过共享卷装置将assets目录从app容器共享到nginx容器,并配置nginx来提供这些文件。