Я создал проект с включенным флагом --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