mirror of
https://github.com/whyour/qinglong.git
synced 2026-06-01 11:20:14 +08:00
* 修改获取示例文件 api path * 增加 debian-slim 基础镜像 * 修复 debian apt 命令,支持 qinglong 命令 * 更新 npm 版本 0.7.7 * 更新 npm v0.8.4 * 修复linux依赖检测 (#2082) * 修复拉取私有仓库 * 修复 shell check_server * 修复 qinglong 命令 * 更新 npm 版本 v0.13.2 * 增加 debian 开发版本 * 修改切换 linux 镜像源 * 修复 qinglong 命令 * 移除 qinglong 命令 npm 默认镜像源 * 修复 workflow * 更新 npm 版本 v0.14.5 * 增加 npx 命令 * 更新 workflow action 版本 * 更新 npm 版本 v0.16.0 * 修复 linux 镜像源 * 更新 npm 版本 v0.17.0 * 更新 npm 版本 v0.18.0 * 修改 npm 安装启动命令 * 更新 npm 版本 v0.19.9 * 修复 debian netcat 包名 * 更新 npm 版本 v0.20.4 * 安装 linux 依赖自动识别 alpine 和 debian * 修改 apt 命令 * 更新 npm 版本 v0.21.2 * 修改 ts 文件执行依赖 * npm 启动增加 reload 逻辑 * 更新 npm 版本 v2.17.8 * 修复 qinglong 命令 * 更新 npm 版本 v2.17.9 * 更新 npm 版本 v2.17.10 * 更新 npm 版本 v2.17.11 * 修改 debian 版本为 12 bookworm * 更新 npm 版本 v2.17.12 * 修改本地服务启动提示 * 更新 npm 版本 v2.17.13 * 写入文件增加文件锁 * 修复系统安装依赖提示 * 更新 npm 版本 v2.18.2-6 * 更新 nodejs 版本 * 更新 npm 版本 v2.18.3-3 * 修复 command 变量 * 移除自动清除 deb * 修复 npm 启动脚本 * 修复发布 npm包依赖文件 * 修改 linux 启动文件逻辑 * 更新 npm 版本 v2.19.0-10 * 修复 apt 命令 * 更新 npm 版本 v2.19.1-0 * 更新 npm 版本 v2.19.2-2 * 增加 packageManager * 增加用户 qinglong * 更新 pipeline * 移除 init_nginx * 更新 npm 版本 v2.20.0 * 更新 npm 版本 2.20.1 * 更新 npm 版本 2.20.2 * fix: 修复非 root 用户启动 * chore: 合并 debian 和 alpine 逻辑 --------- Co-authored-by: dream10201 <xiuxiu10201@gmail.com>
113 lines
3.5 KiB
Docker
113 lines
3.5 KiB
Docker
FROM node:22-slim AS nodebuilder
|
|
|
|
FROM python:3.11-slim-bookworm AS builder
|
|
COPY package.json .npmrc pnpm-lock.yaml /tmp/build/
|
|
COPY --from=nodebuilder /usr/local/bin/node /usr/local/bin/
|
|
COPY --from=nodebuilder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/
|
|
RUN set -x && \
|
|
ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm && \
|
|
apt-get update && \
|
|
apt-get install --no-install-recommends -y libatomic1 && \
|
|
npm i -g pnpm@8.3.1 && \
|
|
cd /tmp/build && \
|
|
pnpm install --prod
|
|
|
|
FROM python:3.11-slim-bookworm
|
|
|
|
ARG QL_MAINTAINER="whyour"
|
|
LABEL maintainer="${QL_MAINTAINER}"
|
|
ARG QL_URL=https://github.com/${QL_MAINTAINER}/qinglong.git
|
|
ARG QL_BRANCH=develop
|
|
ARG PYTHON_SHORT_VERSION=3.11
|
|
|
|
ENV QL_DIR=/ql \
|
|
QL_BRANCH=${QL_BRANCH} \
|
|
LANG=C.UTF-8 \
|
|
SHELL=/bin/bash \
|
|
PS1="\u@\h:\w \$ "
|
|
|
|
ARG QL_UID=5432
|
|
ARG QL_GID=5432
|
|
RUN groupadd -g ${QL_GID} qinglong && \
|
|
useradd -m -u ${QL_UID} -g ${QL_GID} -s /bin/bash qinglong && \
|
|
mkdir -p /home/qinglong/bin /home/qinglong/.ssh && \
|
|
chmod 700 /home/qinglong/.ssh && \
|
|
chown -R ${QL_UID}:${QL_GID} /home/qinglong
|
|
|
|
ENV QL_USER=qinglong
|
|
ENV QL_HOME=/home/$QL_USER
|
|
|
|
COPY --from=nodebuilder /usr/local/bin/node /usr/local/bin/
|
|
COPY --from=nodebuilder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/
|
|
|
|
RUN set -x && \
|
|
ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm && \
|
|
ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx && \
|
|
apt-get update && \
|
|
apt-get upgrade -y && \
|
|
apt-get install --no-install-recommends -y git \
|
|
curl \
|
|
wget \
|
|
tzdata \
|
|
perl \
|
|
openssl \
|
|
openssh-client \
|
|
jq \
|
|
procps \
|
|
netcat-openbsd \
|
|
unzip \
|
|
libatomic1 && \
|
|
apt-get clean && \
|
|
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 && \
|
|
npm install -g pnpm@8.3.1 pm2 ts-node && \
|
|
rm -rf /root/.cache && \
|
|
rm -rf /root/.npm && \
|
|
rm -rf /etc/apt/apt.conf.d/docker-clean && \
|
|
ulimit -c 0
|
|
|
|
RUN mkdir -p ${QL_DIR} ${QL_DIR}/data && \
|
|
chown -R ${QL_UID}:${QL_GID} ${QL_DIR}
|
|
|
|
USER qinglong
|
|
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 /tmp/static && \
|
|
mkdir -p ${QL_DIR}/static && \
|
|
cp -rf /tmp/static/* ${QL_DIR}/static && \
|
|
rm -rf /tmp/static
|
|
|
|
ENV PNPM_HOME=${QL_DIR}/data/dep_cache/node \
|
|
PYTHON_HOME=${QL_DIR}/data/dep_cache/python3 \
|
|
PYTHONUSERBASE=${QL_DIR}/data/dep_cache/python3 \
|
|
HOME=/root
|
|
|
|
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${PNPM_HOME}:${PYTHON_HOME}/bin:${HOME}/bin \
|
|
NODE_PATH=/usr/local/bin:/usr/local/lib/node_modules \
|
|
PIP_CACHE_DIR=${PYTHON_HOME}/pip \
|
|
PYTHONPATH=${PYTHON_HOME}:${PYTHON_HOME}/lib/python${PYTHON_SHORT_VERSION}:${PYTHON_HOME}/lib/python${PYTHON_SHORT_VERSION}/site-packages
|
|
|
|
RUN pip3 install --prefix ${PYTHON_HOME} requests
|
|
|
|
COPY --chown=qinglong:qinglong --from=builder /tmp/build/node_modules/. /ql/node_modules/
|
|
|
|
USER root
|
|
|
|
WORKDIR ${QL_DIR}
|
|
|
|
HEALTHCHECK --interval=5s --timeout=2s --retries=20 \
|
|
CMD curl -sf --noproxy '*' http://localhost:${QlPort:-5700}/api/health || exit 1
|
|
|
|
ENTRYPOINT ["./docker/docker-entrypoint.sh"]
|
|
|
|
VOLUME /ql/data
|
|
|
|
EXPOSE 5700
|