Quasar SSR app in docker container: connection refused
-
Hi!
I am confused. My quasar app is built in ssr mode and put in a docker container. It works fine locally, but when I start it on server - nginx shows bad gateway 502. Please help me to understand what am I doing wrong.
here is docker-compose:... nginx: image: nginx:1.17-alpine container_name: webserver restart: unless-stopped tty: true ports: - "80:80" - "443:443" volumes: - ./:/var/www - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf - /root/.acme.sh/amenu.ru:/etc/acme.sh/amenu.ru - /etc/conf.ddhparam.pem:/etc/nginx/conf.ddhparam.pem links: - front networks: - app-network depends_on: - front #Frontend front: build: context: ./myapp/ dockerfile: Dockerfile container_name: front restart: unless-stopped tty: true ports: - "4000:3000" networks: - app-network ...
Dockerfile:
FROM node:14-alpine as build-stage WORKDIR /app COPY package*.json ./ RUN npm install && npm install -g @quasar/cli COPY . . RUN quasar build -m ssr # этап production (production-stage) FROM node:14-alpine as production-stage WORKDIR /usr/share/www COPY --from=build-stage /app/dist/ssr ./ RUN npm install EXPOSE 3000 CMD ["node", "index.js"]
nginx.conf
#user www-data; pid /run/nginx.pid; worker_processes auto; worker_rlimit_nofile 65535; events { multi_accept on; worker_connections 65535; } http { charset utf-8; sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; log_not_found off; types_hash_max_size 2048; client_max_body_size 16M; # MIME include mime.types; default_type application/octet-stream; # logging access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log warn; server { listen 80; server_name .amenu.ru; location / { proxy_pass http://front:4000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } }
nginx log:
*1 connect() failed (111: Connection refused) while connecting to upstream, client: 178.155.5.107, server: example.com, request: "GET /auth HTTP/1.1", upstream: "http://172.24.0.3:4000/auth", host: "example.com" 178.155.5.107 - - [22/May/2020:09:40:23 +0000] "GET /auth HTTP/1.1" 502 150 "-" "....."
-
Found it. It was a stupid mistake but it cost me a few hours of research. So here it is: nginx proxy_pass http://front:4000; should be proxy_pass http://front:3000; instead.
Which means that althow docker exposes port 4000 OUTSIDE it still maps to 3000 inside docker’s app-network. Counter intuitive to me. -
Hi @Boris ,
I use Lando for my dev docker and it works fine but when i reload my page in browser i get Error: connect ECONNREFUSED 127.0.0.1:80I think this is a SSR problem. any idea how to solve this?
Bers regards
/Peter Sweden