FROM python:3.11-alpine3.18 as builder COPY package.json .npmrc pnpm-lock.yaml /tmp/build/ RUN set -x \ && apk update \ && apk add nodejs npm git \ && npm i -g pnpm@8.3.1 pm2 ts-node \ && cd /tmp/build \ && pnpm install --prod FROM python:3.11-alpine ARG QL_MAINTAINER="whyour" LABEL maintainer="${QL_MAINTAINER}" ARG QL_URL=https://github.com/${QL_MAINTAINER}/qinglong.git ARG QL_BRANCH=develop ENV PNPM_HOME=/root/.local/share/pnpm \ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.local/share/pnpm:/root/.local/share/pnpm/global/5/node_modules:$PNPM_HOME \ NODE_PATH=/usr/local/bin:/usr/local/pnpm-global/5/node_modules:/usr/local/lib/node_modules:/root/.local/share/pnpm/global/5/node_modules \ LANG=C.UTF-8 \ SHELL=/bin/bash \ PS1="\u@\h:\w \$ " \ QL_DIR=/ql \ QL_BRANCH=${QL_BRANCH} VOLUME /ql/data EXPOSE 5700 COPY --from=builder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/ COPY --from=builder /usr/local/bin/. /usr/local/bin/ RUN set -x \ && apk update -f \ && apk upgrade \ && apk --no-cache add -f bash \ coreutils \ git \ curl \ wget \ tzdata \ perl \ openssl \ nginx \ nodejs \ jq \ openssh \ procps \ netcat-openbsd \ unzip \ npm \ && rm -rf /var/cache/apk/* \ && apk update \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && git config --global user.email "qinglong@@users.noreply.github.com" \ && git config --global user.name "qinglong" \ && git config --global http.postBuffer 524288000 \ && rm -rf /root/.pnpm-store \ && rm -rf /root/.local/share/pnpm/store \ && rm -rf /root/.cache \ && ulimit -c 0 ARG SOURCE_COMMIT RUN git clone --depth=1 -b ${QL_BRANCH} ${QL_URL} ${QL_DIR} \ && cd ${QL_DIR} \ && cp -f .env.example .env \ && chmod 777 ${QL_DIR}/shell/*.sh \ && chmod 777 ${QL_DIR}/docker/*.sh \ && git clone --depth=1 -b ${QL_BRANCH} https://github.com/${QL_MAINTAINER}/qinglong-static.git /static \ && mkdir -p ${QL_DIR}/static \ && cp -rf /static/* ${QL_DIR}/static \ && rm -rf /static COPY --from=builder /tmp/build/node_modules/. /ql/node_modules/ WORKDIR ${QL_DIR} RUN apk --no-cache add -f s6-overlay # ENV S6_VERSION=v3.2.0.0 # RUN ARCH=$(uname -m) && \ # case "$ARCH" in \ # x86_64) ARCH="amd64" ;; \ # aarch64) ARCH="aarch64" ;; \ # armv6l) ARCH="arm" ;; \ # armv7l) ARCH="armhf" ;; \ # i386) ARCH="x86" ;; \ # s390x) ARCH="s390x" ;; \ # ppc64le) ARCH="powerpc64le" ;; \ # *) echo "unsupported architecture"; exit 1 ;; \ # esac && \ # S6_OVERLAY_URL=https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-${ARCH}.tar.xz && \ # apk add --no-cache curl && \ # curl -L $S6_OVERLAY_URL -o /tmp/s6-overlay.tar.xz && \ # tar -C / -Jxpf /tmp/s6-overlay.tar.xz COPY docker/s6-rc.d /etc/s6-overlay/s6-rc.d/ RUN chmod +x /etc/s6-overlay/s6-rc.d/*/run && \ chmod +x /etc/s6-overlay/s6-rc.d/*/finish HEALTHCHECK --interval=5s --timeout=2s --retries=20 \ CMD curl -sf --noproxy '*' http://127.0.0.1:5400/api/health || exit 1 ENTRYPOINT ["/init"]