Optimize github build workflow

This commit is contained in:
Karmaa
2025-03-16 21:22:31 -05:00
parent 91eff86814
commit 8c0925f464
3 changed files with 40 additions and 9 deletions

View File

@@ -15,12 +15,25 @@ RUN npm ci --only=production
COPY src/backend/ ./src/backend/
# Stage 3: Build bcrypt for the target platform
FROM node:18-alpine AS bcrypt-builder
FROM ubuntu:focal AS bcrypt-builder
ENV DEBIAN_FRONTEND=noninteractive \
NODE_VERSION=18.x
WORKDIR /app
COPY package*.json ./
RUN apk add --no-cache python3 make g++ \
&& npm ci --only=production bcrypt \
&& rm -rf /root/.npm
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3 \
make \
g++ \
wget \
ca-certificates \
gnupg && \
wget -qO- https://deb.nodesource.com/setup_${NODE_VERSION} | bash - && \
apt-get update && \
apt-get install -y nodejs && \
npm ci --only=production bcrypt && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /var/cache/apt/* /root/.npm /tmp/*
# Stage 4: Final production image
FROM ubuntu:focal AS base

View File

@@ -1,11 +1,22 @@
#!/bin/bash
set -e
set -ex
# Create required directories
mkdir -p /var/run/mongodb /data/db /var/log/{mongodb,supervisor,nginx} /var/lib/nginx
mkdir -p /var/run/{mongodb,supervisor} /data/db /var/log/{mongodb,supervisor,nginx} /var/lib/nginx
chown -R mongodb:mongodb /var/run/mongodb /data/db /var/log/mongodb
chown -R www-data:www-data /var/log/nginx /var/lib/nginx
chown -R www-data:www-data /var/log/nginx /var/lib/nginx /usr/share/nginx/html
chown -R node:node /app
# Ensure MongoDB data directory has correct permissions
chmod 755 /data/db
# Check if mongod is available
which mongod || echo "mongod not found in PATH: $PATH"
# Start supervisor with proper environment
export NODE_ENV=production
export MONGO_URL=mongodb://localhost:27017/termix
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Start all services using supervisor
exec /usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf

View File

@@ -5,7 +5,7 @@ logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
[program:mongodb]
command=/usr/bin/mongod --dbpath /data/db --logpath /var/log/mongodb/mongodb.log
command=/usr/bin/mongod --dbpath /data/db --logpath /var/log/mongodb/mongodb.log --bind_ip 0.0.0.0
user=mongodb
autostart=true
autorestart=true
@@ -13,6 +13,7 @@ startsecs=10
startretries=3
stdout_logfile=/var/log/supervisor/mongodb.stdout.log
stderr_logfile=/var/log/supervisor/mongodb.stderr.log
priority=1
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
@@ -23,25 +24,31 @@ startsecs=5
startretries=3
stdout_logfile=/var/log/supervisor/nginx.stdout.log
stderr_logfile=/var/log/supervisor/nginx.stderr.log
priority=100
[program:ssh-service]
command=/usr/bin/node /app/src/backend/ssh.cjs
user=node
directory=/app
environment=NODE_ENV="production",PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
autostart=true
autorestart=true
startsecs=10
startretries=3
stdout_logfile=/var/log/supervisor/ssh.stdout.log
stderr_logfile=/var/log/supervisor/ssh.stderr.log
priority=200
[program:database-service]
command=/usr/bin/node /app/src/backend/database.cjs
user=node
directory=/app
environment=NODE_ENV="production",MONGO_URL="mongodb://localhost:27017/termix",PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
autostart=true
autorestart=true
startsecs=10
startretries=3
stdout_logfile=/var/log/supervisor/database.stdout.log
stderr_logfile=/var/log/supervisor/database.stderr.log
stderr_logfile=/var/log/supervisor/database.stderr.log
depends_on=mongodb
priority=300