Установите прокси nginx для реакции многоступенчатой ​​сборки с помощью docker compose - PullRequest
0 голосов
/ 15 марта 2019

Я - еще раз - очень смущен, с nginx, докером и реагирую.

Вот что я хочу: 1.) API REST Django, который предоставляет порт только локально 2.) Я хочу, чтобы статические файлы API REST обрабатывались nginx 3.) интерфейс ReactJS, который являетсяобслуживается через nginx через порт 80 (я не знаю, необходимо ли реагировать через nginx - но я слышал, что это уменьшает размер изображения).

Проблема: Не работает,Все контейнеры могут работать по отдельности, но их обслуживание через docker compose не будет работать должным образом.Я, кажется, не могу прокси на API и интерфейс.

Я намекаю на свою проблему: Я вижу, что изображение, которое я налагаю наложен в responseJS "tiangolo / node-frontend: 10" также копирует файл nginx.conf, который может перезаписатьмой.

Используя миллион учебных пособий, я здесь:

nginx.conf

upstream website_rest {
        server restapi:8000;
    }

upstream website_frontend {
    server frontend:8080;
}

server {

    listen 80;

    location /rest_call/ {
        proxy_pass http://website_rest;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location / {
        proxy_pass http://frontend;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /rest_call/staticfiles/ {
        alias /usr/src/website-dj/staticfiles/;
    }

}

Это файл Docker для реагирования:

# Stage 0, "build-stage", based on Node.js, to build and compile the frontend
FROM tiangolo/node-frontend:10 as build-stage
WORKDIR /website-rj
COPY package*.json /website-rj/
RUN npm install
COPY ./ /website-rj/
RUN npm run build

# Stage 1, based on Nginx, to have only the compiled app, ready for production with Nginx
FROM nginx:1.15
COPY --from=build-stage /website-rj/build/ /usr/share/nginx/html
# Copy the default nginx.conf provided by tiangolo/node-frontend
COPY --from=build-stage /nginx.conf /etc/nginx/conf.d/default.conf

Докеркомпозит:

version: '3.7'

services:
  frontend:
    expose:
      - 8080
    build: "./website_rj_docker"
    volumes:
      - ./website_rj_docker/build:/usr/src/website-rj/
  restapi:
    build: "./website_dj_docker/"
    # command: python /usr/src/website-dj/manage.py runserver 0.0.0.0:8000 --settings=rest.settings.production
    command: gunicorn rest.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - ./website_dj_docker/:/usr/src/website-dj/
      - static_volume:/usr/src/website-dj/staticfiles
    expose:
      - 8000
    environment:
      - SECRET_KEY='something...'
      - SQL_ENGINE=django.db.backends.postgresql
      - SQL_DATABASE=postgres
      - SQL_USER=something...
      - SQL_PASSWORD=something...
      - SQL_HOST=db
      - SQL_PORT=5432
      - DATABASE=postgres
    depends_on:
      - db
  db:
    image: postgres:10.5-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
  nginx:
    build: ./nginx
    volumes:
      - static_volume:/usr/src/website-dj/staticfiles
    ports:
      - 1337:80
    depends_on:
      - restapi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...