Optimize github build workflow
This commit is contained in:
@@ -15,12 +15,25 @@ RUN npm ci --only=production
|
|||||||
COPY src/backend/ ./src/backend/
|
COPY src/backend/ ./src/backend/
|
||||||
|
|
||||||
# Stage 3: Build bcrypt for the target platform
|
# 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
|
WORKDIR /app
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN apk add --no-cache python3 make g++ \
|
RUN apt-get update && \
|
||||||
&& npm ci --only=production bcrypt \
|
apt-get install -y --no-install-recommends \
|
||||||
&& rm -rf /root/.npm
|
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
|
# Stage 4: Final production image
|
||||||
FROM ubuntu:focal AS base
|
FROM ubuntu:focal AS base
|
||||||
|
|||||||
@@ -1,11 +1,22 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -ex
|
||||||
|
|
||||||
# Create required directories
|
# 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 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
|
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
|
# Start all services using supervisor
|
||||||
exec /usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf
|
exec /usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf
|
||||||
@@ -5,7 +5,7 @@ logfile=/var/log/supervisor/supervisord.log
|
|||||||
pidfile=/var/run/supervisord.pid
|
pidfile=/var/run/supervisord.pid
|
||||||
|
|
||||||
[program:mongodb]
|
[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
|
user=mongodb
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
@@ -13,6 +13,7 @@ startsecs=10
|
|||||||
startretries=3
|
startretries=3
|
||||||
stdout_logfile=/var/log/supervisor/mongodb.stdout.log
|
stdout_logfile=/var/log/supervisor/mongodb.stdout.log
|
||||||
stderr_logfile=/var/log/supervisor/mongodb.stderr.log
|
stderr_logfile=/var/log/supervisor/mongodb.stderr.log
|
||||||
|
priority=1
|
||||||
|
|
||||||
[program:nginx]
|
[program:nginx]
|
||||||
command=/usr/sbin/nginx -g "daemon off;"
|
command=/usr/sbin/nginx -g "daemon off;"
|
||||||
@@ -23,25 +24,31 @@ startsecs=5
|
|||||||
startretries=3
|
startretries=3
|
||||||
stdout_logfile=/var/log/supervisor/nginx.stdout.log
|
stdout_logfile=/var/log/supervisor/nginx.stdout.log
|
||||||
stderr_logfile=/var/log/supervisor/nginx.stderr.log
|
stderr_logfile=/var/log/supervisor/nginx.stderr.log
|
||||||
|
priority=100
|
||||||
|
|
||||||
[program:ssh-service]
|
[program:ssh-service]
|
||||||
command=/usr/bin/node /app/src/backend/ssh.cjs
|
command=/usr/bin/node /app/src/backend/ssh.cjs
|
||||||
user=node
|
user=node
|
||||||
directory=/app
|
directory=/app
|
||||||
|
environment=NODE_ENV="production",PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
startsecs=10
|
startsecs=10
|
||||||
startretries=3
|
startretries=3
|
||||||
stdout_logfile=/var/log/supervisor/ssh.stdout.log
|
stdout_logfile=/var/log/supervisor/ssh.stdout.log
|
||||||
stderr_logfile=/var/log/supervisor/ssh.stderr.log
|
stderr_logfile=/var/log/supervisor/ssh.stderr.log
|
||||||
|
priority=200
|
||||||
|
|
||||||
[program:database-service]
|
[program:database-service]
|
||||||
command=/usr/bin/node /app/src/backend/database.cjs
|
command=/usr/bin/node /app/src/backend/database.cjs
|
||||||
user=node
|
user=node
|
||||||
directory=/app
|
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
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
startsecs=10
|
startsecs=10
|
||||||
startretries=3
|
startretries=3
|
||||||
stdout_logfile=/var/log/supervisor/database.stdout.log
|
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
|
||||||
Reference in New Issue
Block a user