File size: 5,275 Bytes
5794a52 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
FROM node:20-slim as nodebuilder
FROM python:3.11-slim-bullseye as builder
ARG QL_MAINTAINER="whyour"
LABEL maintainer="${QL_MAINTAINER}"
ARG QL_URL=https://github.com/${QL_MAINTAINER}/qinglong.git
ARG QL_BRANCH=debian
ENV QL_DIR=/ql \
QL_BRANCH=${QL_BRANCH}
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 git && \
git config --global user.email "qinglong@@users.noreply.github.com" && \
git config --global user.name "qinglong" && \
git config --global http.postBuffer 524288000 && \
git clone --depth=1 -b ${QL_BRANCH} ${QL_URL} ${QL_DIR}
RUN mkdir /tmp/build
RUN cp ${QL_DIR}/package.json ${QL_DIR}/.npmrc ${QL_DIR}/pnpm-lock.yaml /tmp/build/
RUN npm i -g pnpm@8.3.1 && \
cd /tmp/build && \
pnpm install --prod
FROM python:3.11-slim-bullseye
ARG QL_MAINTAINER="whyour"
LABEL maintainer="${QL_MAINTAINER}"
ARG QL_URL=https://github.com/${QL_MAINTAINER}/qinglong.git
ARG QL_BRANCH=debian
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}
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 \
sudo \
build-essential \
default-jdk \
default-jre \
g++ \
gcc \
libzbar0 \
fish \
ffmpeg \
nmap \
ca-certificates \
zsh \
cron \
wget \
tzdata \
perl \
openssl \
openssh-client \
nginx \
jq \
procps \
netcat \
sshpass \
rclone \
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/.pnpm-store && \
rm -rf /root/.local/share/pnpm/store && \
rm -rf /root/.cache && \
rm -rf /root/.npm && \
chmod u+s /usr/sbin/cron && \
ulimit -c 0
# Install code-server
RUN curl -fsSL https://code-server.dev/install.sh | sh -s -- --version=4.96.4
# Install ollama
RUN curl -fsSL https://ollama.com/install.sh | sh
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 && \
rm -f ${QL_DIR}/docker/docker-entrypoint.sh
COPY docker-entrypoint.sh ${QL_DIR}/docker
COPY front.conf ${QL_DIR}/docker/front.conf
RUN mkdir /ql/data && \
mkdir /ql/data/config && \
mkdir /ql/data/log && \
mkdir /ql/data/db && \
mkdir /ql/data/scripts && \
mkdir /ql/data/repo && \
mkdir /ql/data/raw && \
mkdir /ql/data/deps && \
chmod -R 777 /ql && \
chmod -R 777 /var && \
chmod -R 777 /usr/local && \
chmod -R 777 /etc/nginx && \
chmod -R 777 /run && \
chmod -R 777 /usr && \
chmod -R 777 /root
COPY --from=builder /tmp/build/node_modules/. /ql/node_modules/
COPY services.json /ql/node_modules/nodemailer/lib/well-known/
COPY notify.py /notify.py
# Create a user to run code-server
RUN useradd -m -s /bin/zsh coder && \
echo 'coder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# Create code-server configuration directory
RUN mkdir -p /home/coder/.local/share/code-server/User
RUN chmod -R 777 /home/coder
# Add settings.json to enable dark mode
RUN echo '{ \
"workbench.colorTheme": "Default Dark Modern", \
"telemetry.enableTelemetry": true, \
"telemetry.enableCrashReporter": true \
}' > /home/coder/.local/share/code-server/User/settings.json
# Change ownership of the configuration directory
RUN chown -R coder:coder /home/coder/.local/share/code-server
# Install Python extension for code-server
#RUN sudo -u coder code-server --install-extension ms-python.python
# Switch to the coder user for running code-server
USER coder
ENV HOME=/home/coder \
PATH=/home/coder/.local/bin:$PATH
WORKDIR ${QL_DIR}
# 创建rclone配置文件
RUN rclone config -h
HEALTHCHECK --interval=5s --timeout=2s --retries=20 \
CMD curl -sf --noproxy '*' http://127.0.0.1:5400/api/health || exit 1
ENTRYPOINT ["./docker/docker-entrypoint.sh"]
VOLUME /ql/data
EXPOSE 5700
|