diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index ef8712a0..893a370c 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -3,15 +3,15 @@ name: Build And Push Docker Image on: push: paths-ignore: - - '.github/**' - - '*.md' + - ".github/**" + - "*.md" branches: - - 'master' - - 'develop' + - "master" + - "develop" tags: - - 'v*' + - "v*" schedule: - - cron: '00 20 * * *' + - cron: "00 20 * * *" workflow_dispatch: jobs: @@ -23,11 +23,9 @@ jobs: fetch-depth: 0 - uses: pixta-dev/repository-mirroring-action@v1 with: - target_repo_url: - git@gitlab.com:whyour/qinglong.git - ssh_private_key: - ${{ secrets.GITLAB_SSH_PK }} - + target_repo_url: git@gitlab.com:whyour/qinglong.git + ssh_private_key: ${{ secrets.GITLAB_SSH_PK }} + to_gitee: runs-on: ubuntu-latest steps: @@ -36,10 +34,8 @@ jobs: fetch-depth: 0 - uses: pixta-dev/repository-mirroring-action@v1 with: - target_repo_url: - git@gitee.com:whyour/qinglong.git - ssh_private_key: - ${{ secrets.GITLAB_SSH_PK }} + target_repo_url: git@gitee.com:whyour/qinglong.git + ssh_private_key: ${{ secrets.GITLAB_SSH_PK }} build-static: runs-on: ubuntu-latest @@ -47,11 +43,11 @@ jobs: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 with: - version: '8.3.1' + version: "8.3.1" - uses: actions/setup-node@v3 with: - cache: 'pnpm' + cache: "pnpm" - name: build front and back run: | @@ -101,10 +97,10 @@ jobs: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v2 with: - version: '8.3.1' + version: "8.3.1" - uses: actions/setup-node@v4 with: - cache: 'pnpm' + cache: "pnpm" - name: Setup timezone uses: szenius/set-timezone@v1.2 @@ -150,7 +146,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - + - name: Build and push id: docker_build uses: docker/build-push-action@v5 @@ -169,6 +165,26 @@ jobs: labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=whyour/qinglong:cache cache-to: type=registry,ref=whyour/qinglong:cache,mode=max - + + - name: Build and push python3.10 + if: ${{ github.ref_name == 'master' }} + id: docker_build_310 + uses: docker/build-push-action@v5 + with: + build-args: | + MAINTAINER=${{ github.repository_owner }} + QL_BRANCH=${{ github.ref_name }} + SOURCE_COMMIT=${{ github.sha }} + network: host + platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,linux/386 + context: . + file: ./docker/310.Dockerfile + push: true + tags: whyour/qinglong:python3.10 + cache-from: type=registry,ref=whyour/qinglong:cache + cache-to: type=registry,ref=whyour/qinglong:cache,mode=max + - name: Image digest - run: echo ${{ steps.docker_build.outputs.digest }} + run: | + echo ${{ steps.docker_build.outputs.digest }} + echo ${{ steps.docker_build_310.outputs.digest }} diff --git a/docker/310.Dockerfile b/docker/310.Dockerfile new file mode 100644 index 00000000..c034a15d --- /dev/null +++ b/docker/310.Dockerfile @@ -0,0 +1,76 @@ +FROM python:3.10-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 \ + && cd /tmp/build \ + && pnpm install --prod + +FROM python:3.10-alpine3.18 + +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} + +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 \ + && npm install -g pnpm@8.3.1 pm2 tsx \ + && rm -rf /root/.pnpm-store \ + && rm -rf /root/.local/share/pnpm/store \ + && rm -rf /root/.cache \ + && rm -rf /root/.npm + +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} + +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"]