FROM debian:bookworm-slim MAINTAINER FmodeInc "support@fmode.cn" ARG NODE_VERSION ARG TERM ARG CMS_DOMAIN ARG CMS_DISABLE ARG NGINX_DISABLE ######################################## ENV LIST ENV NODE_VERSION $NODE_VERSION ENV TERM $TERM ENV CMS_DOMAIN $CMS_DOMAIN ENV CMS_DISABLE $CMS_DISABLE ENV NGINX_DISABLE $NGINX_DISABLE # ENV NODE_VERSION 18.15.0 # ENV NODE_VERSION 16.3.0 # ENV NODE_SERVER_PATH $nova_server_path # ENV NODE_CMS_PATH $nova_cms_path ######################################## Copy Latest Nova Cloud COPY ./opt/ /opt/ COPY ./var/ /var/ RUN ls /opt/ && chown -R root:root /opt/* ######################################## APT Repos to 163 # RUN apt-get update ADD sources.list /etc/apt/ RUN apt-get update ######################################## Nginx # curl http检测 # procps 进程管理 RUN apt-get install -y nginx procps && apt-get install -y nginx curl --no-install-recommends \ && rm -rf /etc/nginx/sites-enabled/* && cp -rf /opt/nginx/* /etc/nginx/sites-enabled && service nginx restart ######################################## NODE RUN groupadd --gid 1000 node \ && useradd --uid 1000 --gid node --shell /bin/bash --create-home node RUN apt-get update --fix-missing RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \ && case "${dpkgArch##*-}" in \ amd64) ARCH='x64';; \ ppc64el) ARCH='ppc64le';; \ s390x) ARCH='s390x';; \ arm64) ARCH='arm64';; \ armhf) ARCH='armv7l';; \ i386) ARCH='x86';; \ *) echo "unsupported architecture"; exit 1 ;; \ esac \ && set -ex \ # libatomic1 for arm && apt-get update && apt-get install -y ca-certificates apt-utils curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends \ && rm -rf /var/lib/apt/lists/* \ && curl -fsSLO --compressed "https://npmmirror.com/mirrors/node/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ && curl -fsSLO --compressed "https://npmmirror.com/mirrors/node/v$NODE_VERSION/SHASUMS256.txt.asc" \ && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ && ln -s /usr/local/bin/node /usr/local/bin/nodejs ######################################## PM2 && bytenode RUN npm config set registry https://registry.npmmirror.com/ && npm i -g pm2@5.1.1 bytenode@1.3.6 # RUN npm i -g bytenode@1.3.6 ######################################## Deploy Latest Nova Cloud RUN cd /opt/edu-textbook-server && pm2 start server.js \ && sleep 5s \ && pm2 startup && pm2 save ######################################## Verify All Depands is OK && node --version \ && pm2 ls \ && node --version \ && npm --version \ ######################################## Clean All Resources RUN apt-mark auto '.*' > /dev/null \ && find /usr/local -type f -executable -exec ldd '{}' ';' \ | awk '/=>/ { print $(NF-1) }' \ | sort -u \ | xargs -r dpkg-query --search \ | cut -d: -f1 \ | sort -u \ | xargs -r apt-mark manual \ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ && rm -rf /var/log/* \ && env # && rm -r /var/log/postgresql/* \ # && rm -r /var/log/apt/* \ # && rm -r /var/log/nginx/* \ # COPY docker-entrypoint.sh /usr/local/bin/ # DEFAULT WEB EXPOSE 80 EXPOSE 61337 # DEFAULT SSL EXPOSE 443 ENTRYPOINT [ "node","/opt/edu-textbook-server/keepalive.js" ]