Optimize github build workflow
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user