mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-23 14:56:07 +08:00
107 lines
3.1 KiB
Docker
107 lines
3.1 KiB
Docker
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"]
|