Активы Rails не загружаются в Docker - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть приложение rails, использующее Postgres, Puma, Nginx в среде Docker.После того, как я запустил сборку docker-compose и docker-compose, я смогу посетить страницу, за исключением того, что ресурсы (js, images, css) не могут быть найдены.У меня есть возможность входа, но после успешного входа я перенаправляюсь на локальный хост, а не на локальный хост / admin / settings.У меня такое чувство, что это проблема конфигурации Nginx, но пока я не смог добиться успеха.

Мой nginx.conf:

server {
  listen       80;

# Allow nginx to serve assets from docker
  location ^~ /my-app/assets/ {
    rewrite /my-app(/assets/.*) $1;
    root /public/;
    gzip_static on;
    expires max;
    add_header Cache-Control public;
    add_header Strict-Transport-Security "";
  }

# Allow nginx to serve assets from ALB
  location ^~ /assets/ {
    root /public/;
    gzip_static on;
    expires max;
    add_header Cache-Control public;
    add_header Strict-Transport-Security "";
  }

  location / {
    proxy_pass http://my-app:3000;
    add_header Strict-Transport-Security "";
  }
}

Мой docker-compose.ymlis:

version: "3.4"
services:
  my-app:
    build:
      context: .
      target: my-app
    restart: "no"
    env_file:
      ./.my-app.env
    links:
      - postgres
    command: >
      /bin/bash -c "
        while ! nc -z postgres 5432;
        do
          echo waiting for postgres;
          sleep 1;
        done;
        echo Connected!;
        bundle exec rake db:create db:migrate;
        rm -f /app/tmp/pids/server.pid
        bundle exec rake assets:clobber
        bundle exec rake assets:precompile RAILS_ENV=production
        bundle exec rake assets:precompile RAILS_ENV=staging
        bundle exec rails server;
     "
  postgres:
    image: postgres:9.6
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - '5432:5432'
my-app-nginx:
  build:
    context: .
    target: nginx
  links:
    - skymap
  restart: "no"
  ports:
    - '3000:80'

В моем Dockerfile я выполняю инструкции Nginx, приведенные ниже:

# Start NGINX container config
FROM nginx as nginx
WORKDIR /public
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
COPY public /public

Я не уверен, правильно ли я задаю путь или ресурсыпросто не скомпилирован.

1 Ответ

0 голосов
/ 10 сентября 2018

Если это не проблема, вы можете настроить рельсы для обслуживания статических файлов вместо nginx, и это будет работать.

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