From fb84f1f89be6e8724b1d70f6ef920cad8ebcf080 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Sat, 15 Nov 2025 00:21:30 +0300 Subject: [PATCH] Features: 1) Add Dockerfile for supervisor service; 2) Update docker-compose.yml to include supervisor service; Fixes: 1) No fixes applied; Extra: 1) Supervisor service configured with environment variables and custom start script; 2) Uses multi-stage build for optimized runtime; 3) Sets up non-root user for security; 4) Exposes port 7777; 5) Depends on app service; 6) Uses default logging config. --- Dockerfiles/supervisor.Dockerfile | 38 +++++++++++++++++++++++++++++++ docker-compose.yml | 15 ++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 Dockerfiles/supervisor.Dockerfile diff --git a/Dockerfiles/supervisor.Dockerfile b/Dockerfiles/supervisor.Dockerfile new file mode 100644 index 00000000..f6835cc5 --- /dev/null +++ b/Dockerfiles/supervisor.Dockerfile @@ -0,0 +1,38 @@ +# syntax=docker/dockerfile:1 +FROM node:22-bookworm-slim AS build +WORKDIR /app + +ARG EVIBES_BASE_DOMAIN +ARG EVIBES_PROJECT_NAME +ENV EVIBES_BASE_DOMAIN=$EVIBES_BASE_DOMAIN +ENV EVIBES_PROJECT_NAME=$EVIBES_PROJECT_NAME + +COPY ./supervisor/package.json ./supervisor/package-lock.json ./ +RUN npm ci --include=optional + +COPY ./supervisor ./ +RUN npm run build + +FROM node:22-bookworm-slim AS runtime +WORKDIR /app + +ENV HOST=0.0.0.0 +ENV PORT=7777 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends curl \ + && rm -rf /var/lib/apt/lists/* + +RUN addgroup --system --gid 1001 nodeapp \ + && adduser --system --uid 1001 --ingroup nodeapp --home /home/nodeapp nodeapp +USER nodeapp + +COPY --from=build /app/.output/ ./ + +RUN install -d -m 0755 -o nodeapp -g nodeapp /home/nodeapp \ + && printf '#!/bin/sh\nif [ \"$DEBUG\" = \"1\" ]; then export NODE_ENV=development; else export NODE_ENV=production; fi\nexec node /app/server/index.mjs\n' > /home/nodeapp/start.sh \ + && chown nodeapp:nodeapp /home/nodeapp/start.sh \ + && chmod +x /home/nodeapp/start.sh + +USER nodeapp +CMD ["sh", "/home/nodeapp/start.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index 4a0b5dc2..c31e7a9d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -217,6 +217,21 @@ services: - --web.config.file=/etc/prometheus/web.yml logging: *default-logging +# supervisor: +# container_name: supervisor +# build: +# context: . +# dockerfile: ./Dockerfiles/supervisor.Dockerfile +# restart: always +# env_file: +# - .env +# ports: +# - "7777:7777" +# depends_on: +# app: +# condition: service_started +# logging: *default-logging + volumes: postgres-data: