I want to use nginx as load balancer to my FastAPI replicas but i cannot get it to work. I read that uvicorn can also do it, but nginx would handle load balancing nicely. forum post.
I get an error
host not found in upstream "inconnect1:5001"
docker-compose.yml
version: "3"
networks:
proxy-tier:
external:
name: nginx-proxy
services:
inconnect1:
image: inconnect:0.1
container_name: inconnect1
environment:
- PORT=5001
volumes:
- ./inconnect/app:/app
ports:
- 5001:5001
nginx:
image: jwilder/nginx-proxy
container_name: nginx
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./letsencrypt/certs:/etc/nginx/certs:ro
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
networks:
- proxy-tier
restart: always
deploy:
mode: replicated
replicas: 1
nginx.conf
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream restapis {
server inconnect:5001;
}
server {
listen 80;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://restapis;
}
location /static {
# path for static files
root /path/to/app/static;
}
}
}
As your nginx.conf file :
server inconnect:5001; should be server inconnect1:5001;
And in docker compose file should use link from nginx container to inconnect1 application. (remove network on nginx container)
image: jwilder/nginx-proxy
container_name: nginx
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./letsencrypt/certs:/etc/nginx/certs:ro
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
links:
- "inconnect1:inconnect1"
restart: always
deploy:
mode: replicated
replicas: 1
Or use on 1 network:
networks:
proxy-tier:
driver: bridge
services:
inconnect1:
image: inconnect:0.1
container_name: inconnect1
environment:
- PORT=5001
volumes:
- ./inconnect/app:/app
ports:
- 5001:5001
networks:
- proxy-tier
nginx:
image: jwilder/nginx-proxy
container_name: nginx
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./letsencrypt/certs:/etc/nginx/certs:ro
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
networks:
- proxy-tier
restart: always
deploy:
mode: replicated
replicas: 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With