Docker + Ruby on Rails 5 с Puma и Nginx в рабочем состоянии возвращает пустой html в корне - PullRequest
0 голосов
/ 06 декабря 2018

Я создал проект с включенным флагом --api, dockerized и добавил nginx, затем создал интерфейс с реакцией, скомпилировал все и поместил в общую папку моего приложения rails.В env разработки все работает просто отлично, и puma, и nginx обслуживают статические файлы, в то время как в prod env они просто ничего не отправляют в корень приложения ('127.0.0.1/').В консоли браузера нет ошибок, в журнале сервера prod env указано, что «Нет маршрута соответствует [GET]" / "'.Ничего не изменилось в конфигурации Puma.

upstream rails_app {  
   server login:3005;
} 

server {  
   listen 80 default;
   server_name www.xex.kek;   

   root   $RAILS_ROOT/public;  
   index  index.html;

   access_log $RAILS_ROOT/log/nginx.access.log;  
   error_log $RAILS_ROOT/log/nginx.error.log;   

   location ~ /\. {    
      deny all;  
   }

   location ~* ^.+\.(rb|log)$ {    
      deny all;  
   }  

   location ~ ^/(assets|images|javascripts|stylesheets|swfs|system)/   {    
      try_files $uri @rails;     
      access_log off;    
      gzip_static on; 

      expires max;    
      add_header Cache-Control public;     

      add_header Last-Modified "";    
      add_header ETag "";    
      break;  
   } 

   location / {    
      try_files $uri @rails;  
   }   

   location @rails {    
      proxy_set_header  X-Real-IP  $remote_addr;    
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;         

      proxy_set_header Host $http_host;    
      proxy_redirect off;    
      proxy_pass http://rails_app;  
   }
}

docker-compose.yml

version: '3.3'

services:
  login:
    depends_on:
      - postgres
      - redis
    build: ./login_serv
    working_dir: /usr/src/rails
    ports: 
      - "3005:3005"
    volumes:
      -  ./login_serv:/usr/src/rails 
  web:
    build: 
      context: ./login_serv
      dockerfile: Dockerfile-nginx
    links:
      - login
    ports:
      - "80:80"
    depends_on:
      - login

и файл docker для nginx

FROM nginx

RUN apt-get update -qq && apt-get -y install apache2-utils

ENV RAILS_ROOT /usr/src/rails

WORKDIR $RAILS_ROOT

RUN mkdir log

COPY /public public/

COPY config/nginx.conf /tmp/docker.nginx

RUN envsubst '$RAILS_ROOT' < /tmp/docker.nginx > /etc/nginx/conf.d/default.conf


CMD [ "nginx", "-g", "daemon off;" ]

Я хочуЕще раз укажите, что в dev env все работает.Dockerfile для nginx также находится в корне приложения.Все остальные конечные точки, которые возвращают json, отлично работают в обоих envs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...