From 4975be197dd46f20de24747d9bb8dac8ceed047e Mon Sep 17 00:00:00 2001 From: Ammar Qaffaf Date: Thu, 22 Feb 2024 01:36:33 +0300 Subject: [PATCH] working dockerized environment --- Dockerfile | 24 ++++++++++++++---------- bun.lockb | Bin 286429 -> 286429 bytes nginx.conf | 31 ++++++++++++++++++++----------- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index f218aeb..109471d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM node:20 as builder -WORKDIR /usr/src/app +WORKDIR /src/app COPY package*.json ./ @@ -8,18 +8,22 @@ RUN npm install COPY . . -RUN npm run build auth -RUN npm run build backend +RUN npm run build -FROM nginx:alpine +# Runtime stage +FROM node:20-alpine -RUN rm /etc/nginx/conf.d/default.conf +RUN apk add --no-cache nginx +COPY nginx.conf /etc/nginx/nginx.conf -COPY nginx.conf /etc/nginx/conf.d +WORKDIR /app -COPY --from=builder /usr/src/app/dist/apps/auth /usr/share/nginx/html/auth -COPY --from=builder /usr/src/app/dist/apps/backend /usr/share/nginx/html/backend +COPY --from=builder /src/app/dist/apps/auth ./auth +COPY --from=builder /src/app/dist/apps/backend ./backend +COPY package*.json ./ -EXPOSE 443 +RUN npm install -CMD ["nginx", "-g", "daemon off;"] +EXPOSE 80 + +CMD ["sh", "-c", "nginx -g 'daemon off;' & node auth/main.js & node backend/main.js"] diff --git a/bun.lockb b/bun.lockb index aafac7209b6f7d998a51ac765adaacfba39ac5c2..d8412183864ff8303a75e7d80bcbd80d3c59380a 100755 GIT binary patch delta 48375 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 Tl(JF-)daY7a_sbX8Pezf`wY*H delta 48232 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 diff --git a/nginx.conf b/nginx.conf index 6c402b4..6e330da 100644 --- a/nginx.conf +++ b/nginx.conf @@ -1,4 +1,8 @@ -events {} +worker_processes 1; + +events { + worker_connections 1024; +} http { include mime.types; @@ -7,18 +11,23 @@ http { keepalive_timeout 65; server { - listen 443; - server_name localhost; + listen 80; - location /auth { - alias /usr/share/nginx/html/auth; - try_files $uri $uri/ /auth/index.html; - } + location /auth { + proxy_pass http://localhost:7001; + 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; + } - location /backend { - alias /usr/share/nginx/html/backend; - try_files $uri $uri/ /backend/index.html; - } + location / { + proxy_pass http://localhost:7000; + 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; + } # error pages error_page 500 502 503 504 /50x.html;