
Estoy intentando configurar mi frontend, backend y mi base de datos usando Docker. Estas son las condiciones en las que solo mi contenedor frontend debe realizar una solicitud al backend y no al público. He escrito un archivo conf pero aún puedo acceder al backend con postman. También estoy moviendo los archivos de compilación de la interfaz a un volumen y los monté en /usr/share/nginx/html
donde el contenedor de la interfaz se detendrá y los archivos se entregarán directamente desde el contenedor nginx.
¿Es bueno tener otro servicio nginx ejecutándose en el contenedor frontend donde la ruta principal del contenedor nginx al servicio frontend nginx?
predeterminado.conf
upstream backend_servers {
server backend:8000;
}
server {
listen 80;
location / {
root /usr/share/nginx/html/frontend;
try_files $uri $uri/ /index.html;
}
# Reverse proxy requests to the uWSGI server
location /api {
rewrite ^/api(.*) $1 break;
uwsgi_pass backend_servers;
include /etc/nginx/uwsgi_params;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
mi archivo de redacción de Docker es
version: '3'
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile.prod
volumes:
- app-data:/app/dist
backend:
build:
context: .
dockerfile: Dockerfile.prod
environment:
- DEBUG=0
- ALLOWED_HOSTS=nginx,localhost,127.0.0.1
- SECRET_KEY=my-secure-key
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
depends_on:
- db
db:
image: postgres:latest
restart: always
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- db-data:/var/lib/postgresql/data
nginx:
build:
context: ./nginx
dockerfile: Dockerfile.prod
ports:
- "80:80"
volumes:
- app-data:/usr/share/nginx/html/frontend
depends_on:
- backend
volumes:
db-data:
app-data:
Respuesta1
Coloque el frontend, el backend y nginx en su propia red puenteada:
networks:
backend:
driver: bridge
service:
frontend:
...
networks:
- backend