diff --git a/docker/Dockerfile b/docker/Dockerfile index 28fb5818..9134e4d4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -40,158 +40,160 @@ RUN if [ -n "$DISABLE_MINIFY" ] || [ -n "$DISABLE_TRANSLATE" ]; then \ RUN rm -rf /opt/meshcentral/meshcentral/docker RUN rm -rf /opt/meshcentral/meshcentral/node_modules +RUN cat /opt/meshcentral/meshcentral/package.json +RUN ls -la /opt/meshcentral/meshcentral/node_modules || echo "No node_modules folder present" ### STAGE 2 PRECOMPILE DEPS MODULE -FROM alpine:3.22 AS dep-compiler +# FROM alpine:3.22 AS dep-compiler -RUN apk update && \ - echo -e "----------\nINSTALLING ALPINE PACKAGES...\n----------"; \ - apk add --no-cache --update \ - bash gcc g++ jq make nodejs npm python3 tzdata +# RUN apk update && \ +# echo -e "----------\nINSTALLING ALPINE PACKAGES...\n----------"; \ +# apk add --no-cache --update \ +# bash gcc g++ jq make nodejs npm python3 tzdata -RUN mkdir -p /opt/meshcentral -COPY ./package.json /opt/meshcentral/package.json -WORKDIR /opt/meshcentral +# RUN mkdir -p /opt/meshcentral +# COPY ./package.json /opt/meshcentral/package.json +# WORKDIR /opt/meshcentral -RUN jq '.dependencies["modern-syslog"] = "1.2.0"' package.json > tmp.$$.json \ - && mv tmp.$$.json package.json \ - && npm i --package-lock-only \ - && npm ci +# RUN jq '.dependencies["modern-syslog"] = "1.2.0"' package.json > tmp.$$.json \ +# && mv tmp.$$.json package.json \ +# && npm i --package-lock-only \ +# && npm ci -### STAGE 3 RUNTIME +# ### STAGE 3 RUNTIME -FROM alpine:3.22 AS runtime +# FROM alpine:3.22 AS runtime -# Copy prepared app from builder stage -COPY --from=builder /opt/meshcentral/meshcentral /opt/meshcentral/meshcentral -COPY --from=dep-compiler /opt/meshcentral/node_modules /opt/meshcentral/meshcentral/node_modules +# # Copy prepared app from builder stage +# COPY --from=builder /opt/meshcentral/meshcentral /opt/meshcentral/meshcentral +# COPY --from=dep-compiler /opt/meshcentral/node_modules /opt/meshcentral/meshcentral/node_modules -# environment variables -ENV NODE_ENV="production" \ - CONFIG_FILE="/opt/meshcentral/meshcentral-data/config.json" \ - DYNAMIC_CONFIG="false" +# # environment variables +# ENV NODE_ENV="production" \ +# CONFIG_FILE="/opt/meshcentral/meshcentral-data/config.json" \ +# DYNAMIC_CONFIG="false" -# environment variables for the above defined MeshCentral Config.json. Can be done like that following: https://docs.docker.com/reference/dockerfile/#env -ENV ALLOW_PLUGINS="false" \ - ALLOW_NEW_ACCOUNTS="false" \ - ALLOWED_ORIGIN="false" \ - IFRAME="false" \ - REGEN_SESSIONKEY="false" \ - WEBRTC="false" \ - LOCAL_SESSION_RECORDING="true" \ - MINIFY="true" \ - HOSTNAME="localhost" \ - REVERSE_PROXY="" \ - REVERSE_PROXY_TLS_PORT="443" \ - TRUSTED_PROXY="" \ - ARGS="" +# # environment variables for the above defined MeshCentral Config.json. Can be done like that following: https://docs.docker.com/reference/dockerfile/#env +# ENV ALLOW_PLUGINS="false" \ +# ALLOW_NEW_ACCOUNTS="false" \ +# ALLOWED_ORIGIN="false" \ +# IFRAME="false" \ +# REGEN_SESSIONKEY="false" \ +# WEBRTC="false" \ +# LOCAL_SESSION_RECORDING="true" \ +# MINIFY="true" \ +# HOSTNAME="localhost" \ +# REVERSE_PROXY="" \ +# REVERSE_PROXY_TLS_PORT="443" \ +# TRUSTED_PROXY="" \ +# ARGS="" -# Database -# Multi-variable declaration to reduce layers. -ENV USE_MONGODB="false" \ - USE_POSTGRESQL="false" \ - USE_MARIADB="false" +# # Database +# # Multi-variable declaration to reduce layers. +# ENV USE_MONGODB="false" \ +# USE_POSTGRESQL="false" \ +# USE_MARIADB="false" -# Preinstallation args one per line due to: https://docs.docker.com/reference/dockerfile/#arg -ARG PREINSTALL_LIBS="false" -ARG INCLUDE_MONGODB_TOOLS="false" -ARG INCLUDE_POSTGRESQL_TOOLS="false" -ARG INCLUDE_MARIADB_TOOLS="false" +# # Preinstallation args one per line due to: https://docs.docker.com/reference/dockerfile/#arg +# ARG PREINSTALL_LIBS="false" +# ARG INCLUDE_MONGODB_TOOLS="false" +# ARG INCLUDE_POSTGRESQL_TOOLS="false" +# ARG INCLUDE_MARIADB_TOOLS="false" -# MongoDB Variables -# The following MONGO_URL variable overwrites most other mongoDb related varialbes. -ENV MONGO_HOST="" \ - MONGO_PORT="27017" \ - MONGO_USERNAME="" \ - MONGO_PASS="" \ - MONGO_URL="" +# # MongoDB Variables +# # The following MONGO_URL variable overwrites most other mongoDb related varialbes. +# ENV MONGO_HOST="" \ +# MONGO_PORT="27017" \ +# MONGO_USERNAME="" \ +# MONGO_PASS="" \ +# MONGO_URL="" -# PostgreSQL Variables -ENV PSQL_HOST="" \ - PSQL_PORT="5432" \ - PSQL_USER="" \ - PSQL_PASS="" \ - PSQL_DATABASE="" +# # PostgreSQL Variables +# ENV PSQL_HOST="" \ +# PSQL_PORT="5432" \ +# PSQL_USER="" \ +# PSQL_PASS="" \ +# PSQL_DATABASE="" -# MariaDB/MySQL Variables, Alpine Linux only provides the actual MariaDB binaries. -ENV MARIADB_HOST="" \ - MARIADB_PORT="3306" \ - MARIADB_USER="" \ - MARIADB_PASS="" \ - MARIADB_DATABASE="" +# # MariaDB/MySQL Variables, Alpine Linux only provides the actual MariaDB binaries. +# ENV MARIADB_HOST="" \ +# MARIADB_PORT="3306" \ +# MARIADB_USER="" \ +# MARIADB_PASS="" \ +# MARIADB_DATABASE="" -WORKDIR /opt/meshcentral +# WORKDIR /opt/meshcentral -RUN apk update && \ - echo -e "----------\nINSTALLING ALPINE PACKAGES...\n----------"; \ - apk add --no-cache --update \ - bash curl jq nodejs npm tzdata && \ - rm -rf /var/cache/* \ - /tmp/* \ - /usr/share/man/ \ - /usr/share/doc/ \ - /var/log/* \ - /var/spool/* \ - /usr/lib/debug/ && \ - npm install -g npm@latest +# RUN apk update && \ +# echo -e "----------\nINSTALLING ALPINE PACKAGES...\n----------"; \ +# apk add --no-cache --update \ +# bash curl jq nodejs npm tzdata && \ +# rm -rf /var/cache/* \ +# /tmp/* \ +# /usr/share/man/ \ +# /usr/share/doc/ \ +# /var/log/* \ +# /var/spool/* \ +# /usr/lib/debug/ && \ +# npm install -g npm@latest -RUN case "$PREINSTALL_LIBS" in \ - true|yes|TRUE|YES) \ - cd meshcentral && \ - echo -e "----------\nPREINSTALLING LIBRARIES...\n----------"; \ - npm install ssh2@1.16.0 nodemailer@6.10.1 image-size@2.0.2 wildleek@2.0.0 otplib@12.0.1 yub@0.11.1;; \ - false|no|FALSE|NO) \ - echo "Not pre-installing libraries.";; \ - *) \ - echo -e "Invalid value for build argument INCLUDE_POSTGRESQL_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ - exit 1;; \ - esac +# RUN case "$PREINSTALL_LIBS" in \ +# true|yes|TRUE|YES) \ +# cd meshcentral && \ +# echo -e "----------\nPREINSTALLING LIBRARIES...\n----------"; \ +# npm install ssh2@1.16.0 nodemailer@6.10.1 image-size@2.0.2 wildleek@2.0.0 otplib@12.0.1 yub@0.11.1;; \ +# false|no|FALSE|NO) \ +# echo "Not pre-installing libraries.";; \ +# *) \ +# echo -e "Invalid value for build argument INCLUDE_POSTGRESQL_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ +# exit 1;; \ +# esac -# NOTE: ALL MODULES MUST HAVE A VERSION NUMBER AND THE VERSION MUST MATCH THAT USED IN meshcentraljs mainStart() -RUN case "$INCLUDE_MONGODB_TOOLS" in \ - true|yes|TRUE|YES) \ - apk add --no-cache mongodb-tools && \ - cd meshcentral && \ - echo -e "----------\nPREINSTALLING MONGODB LIBRARIES...\n----------"; \ - npm install mongodb@4.17.2 @mongodb-js/saslprep@1.3.1;; \ - false|no|FALSE|NO) \ - echo "Not including MongoDB Tools.";; \ - *) \ - echo "Invalid value for build argument INCLUDE_MONGODB_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ - exit 1;; \ - esac +# # NOTE: ALL MODULES MUST HAVE A VERSION NUMBER AND THE VERSION MUST MATCH THAT USED IN meshcentraljs mainStart() +# RUN case "$INCLUDE_MONGODB_TOOLS" in \ +# true|yes|TRUE|YES) \ +# apk add --no-cache mongodb-tools && \ +# cd meshcentral && \ +# echo -e "----------\nPREINSTALLING MONGODB LIBRARIES...\n----------"; \ +# npm install mongodb@4.17.2 @mongodb-js/saslprep@1.3.1;; \ +# false|no|FALSE|NO) \ +# echo "Not including MongoDB Tools.";; \ +# *) \ +# echo "Invalid value for build argument INCLUDE_MONGODB_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ +# exit 1;; \ +# esac -RUN case "$INCLUDE_POSTGRESQL_TOOLS" in \ - true|yes|TRUE|YES) \ - apk add --no-cache postgresql-client && \ - cd meshcentral && \ - echo -e "----------\nPREINSTALLING POSTGRESQL LIBRARIES...\n----------"; \ - npm install pg@8.14.1;; \ - false|no|FALSE|NO) \ - echo "Not including PostgreSQL Tools.";; \ - *) \ - echo -e "Invalid value for build argument INCLUDE_POSTGRESQL_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ - exit 1;; \ - esac +# RUN case "$INCLUDE_POSTGRESQL_TOOLS" in \ +# true|yes|TRUE|YES) \ +# apk add --no-cache postgresql-client && \ +# cd meshcentral && \ +# echo -e "----------\nPREINSTALLING POSTGRESQL LIBRARIES...\n----------"; \ +# npm install pg@8.14.1;; \ +# false|no|FALSE|NO) \ +# echo "Not including PostgreSQL Tools.";; \ +# *) \ +# echo -e "Invalid value for build argument INCLUDE_POSTGRESQL_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ +# exit 1;; \ +# esac -RUN case "$INCLUDE_MARIADB_TOOLS" in \ - true|yes|TRUE|YES) \ - apk add --no-cache mariadb-client && \ - cd meshcentral && \ - echo -e "----------\nPREINSTALLING MARIADB/MYSQL LIBRARIES...\n----------"; \ - npm install mariadb@3.4.0 mysql2@3.11.4;; \ - false|no|FALSE|NO) \ - echo "Not including MariaDB/MySQL Tools.";; \ - *) \ - echo -e "Invalid value for build argument INCLUDE_MARIADB_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ - exit 1;; \ - esac +# RUN case "$INCLUDE_MARIADB_TOOLS" in \ +# true|yes|TRUE|YES) \ +# apk add --no-cache mariadb-client && \ +# cd meshcentral && \ +# echo -e "----------\nPREINSTALLING MARIADB/MYSQL LIBRARIES...\n----------"; \ +# npm install mariadb@3.4.0 mysql2@3.11.4;; \ +# false|no|FALSE|NO) \ +# echo "Not including MariaDB/MySQL Tools.";; \ +# *) \ +# echo -e "Invalid value for build argument INCLUDE_MARIADB_TOOLS, possible values: 'yes', 'true', 'no' or 'false'"; \ +# exit 1;; \ +# esac -# install dependencies from package.json -RUN cd meshcentral && \ - npm cache clean --force && \ - rm -rf /root/ /tmp/ +# # install dependencies from package.json +# RUN cd meshcentral && \ +# npm cache clean --force && \ +# rm -rf /root/ /tmp/ # Expose needed ports EXPOSE 80 443