No More Posting New Topics!

If you have a question or an issue, please start a thread in our Github Discussions Forum.
This forum is closed for new threads/ topics.

Navigation

    Quasar Framework

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Quasar SSR app in docker container: connection refused

    Help
    2
    3
    938
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Boris
      Boris last edited by

      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 "-" "....."
      
      1 Reply Last reply Reply Quote 0
      • Boris
        Boris last edited by

        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. 😕

        1 Reply Last reply Reply Quote 0
        • PeterQF
          PeterQF last edited by PeterQF

          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:80

          I think this is a SSR problem. any idea how to solve this?

          Bers regards
          /Peter Sweden

          1 Reply Last reply Reply Quote 0
          • First post
            Last post