From a2c66e34caa4176e60af634a9805ca6af3313c13 Mon Sep 17 00:00:00 2001 From: Karmaa Date: Sun, 16 Mar 2025 23:43:21 -0500 Subject: [PATCH] Optimize github build workflow --- docker/Dockerfile | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 0e93bc68..6c4f9c7d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -11,7 +11,7 @@ RUN npm run build FROM node:18-alpine AS backend-builder WORKDIR /app COPY package*.json ./ -RUN npm ci --force && \ +RUN npm ci --only=production --force && \ npm cache clean --force COPY src/backend/ ./src/backend/ @@ -50,11 +50,8 @@ ENV DEBIAN_FRONTEND=noninteractive \ PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Create users first -RUN groupadd -r mongodb && useradd -r -g mongodb mongodb && \ - groupadd -r node && useradd -r -g node -m node && \ - mkdir -p /data/db /var/log/mongodb /var/run/mongodb && \ - chown -R mongodb:mongodb /data/db /var/log/mongodb /var/run/mongodb && \ - chmod 755 /data/db /var/log/mongodb /var/run/mongodb +RUN groupadd -r mongodb && useradd -r -g mongodb mongodb \ + && groupadd -r node && useradd -r -g node -m node # Install all dependencies in one layer RUN rm -f /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock* && \ @@ -75,26 +72,27 @@ RUN rm -f /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/loc mongodb-org-server=${MONGO_VERSION} \ mongodb-org-shell=${MONGO_VERSION} && \ apt-get clean && \ - rm -rf /var/lib/apt/lists/* /var/cache/apt/* /tmp/* + rm -rf /var/lib/apt/lists/* /var/cache/apt/* /tmp/* && \ + mkdir -p /data/db /var/log/mongodb /var/run/mongodb && \ + chown -R mongodb:mongodb /data/db /var/log/mongodb /var/run/mongodb && \ + chmod 755 /data/db /var/log/mongodb /var/run/mongodb # Setup nginx and frontend COPY docker/nginx.conf /etc/nginx/nginx.conf COPY --from=frontend-builder /app/dist /usr/share/nginx/html -RUN chown -R www-data:www-data /usr/share/nginx/html && \ - mkdir -p /var/log/nginx && \ - chown -R www-data:www-data /var/log/nginx +RUN chown -R www-data:www-data /usr/share/nginx/html # Setup backend WORKDIR /app COPY package*.json ./ -RUN npm ci --only=production --force && \ +RUN npm ci --only=production --ignore-scripts --force && \ npm cache clean --force && \ rm -rf /tmp/* COPY --from=bcrypt-builder /app/node_modules/bcrypt /app/node_modules/bcrypt COPY --from=backend-builder /app/src/backend ./src/backend RUN chown -R node:node /app -VOLUME ["/data/db", "/var/log/mongodb"] +VOLUME ["/data/db"] EXPOSE 8080 8081 8082 27017 COPY docker/entrypoint.sh /entrypoint.sh