diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml new file mode 100644 index 000000000..88c973106 --- /dev/null +++ b/.github/workflows/build-and-push.yml @@ -0,0 +1,52 @@ +name: build-and-push + +on: + workflow_dispatch: + inputs: + registryAddress: + description: 'Registry Address' + default: 'registry-hkproxy.fit2cloud.com' + required: true + dockerImageName: + description: 'Docker Image Name' + default: 'maxkb/maxkb' + required: true + dockerImageTag: + description: 'Docker Image Tag' + default: 'v1.0.0' + required: true + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Prepare + id: prepare + run: | + DOCKER_IMAGE=${{ github.event.inputs.registryAddress }}/${{ github.event.inputs.dockerImageName }} + DOCKER_PLATFORMS=linux/amd64,linux/arm64 + TAG_NAME=${{ github.event.inputs.dockerImageTag }} + DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME} --tag ${DOCKER_IMAGE}:latest" + echo ::set-output name=docker_image::${DOCKER_IMAGE} + echo ::set-output name=version::${TAG_NAME} + echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \ + --build-arg VERSION=${TAG_NAME} \ + --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \ + --build-arg VCS_REF=${GITHUB_SHA::8} \ + ${DOCKER_IMAGE_TAGS} . + - name: Set up Docker Buildx + uses: crazy-max/ghaction-docker-buildx@v3 + - name: Docker Buildx (build) + run: | + docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }} + - name: Login to Registry + uses: docker/login-action@v1 + with: + registry: ${{ github.event.inputs.registryAddress }} + username: ${{ secrets.FIT2CLOUD_REGISTRY_USERNAME }} + password: ${{ secrets.FIT2CLOUD_REGISTRY_PASSWORD }} + - name: Docker Buildx (push) + run: | + docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5c8b0b26a..26a451024 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,16 @@ +FROM python:3.11-slim as vector-model-build +COPY install_model.py install_model.py +RUN pip3 install --upgrade pip setuptools && \ + pip install pycrawlers && \ + pip install transformers && \ + python3 install_model.py + +FROM node:18-alpine3.18 as web-build +COPY ui ui +RUN cd ui && \ + npm install && \ + npm run build + FROM python:3.11-slim ENV LANG=C.UTF-8 @@ -6,7 +19,10 @@ USER root # 创建工作目录 RUN mkdir -p /opt/maxkb/app && mkdir -p /opt/maxkb/model # 拷贝项目 +RUN ls -la COPY . /opt/maxkb/app +COPY --from=vector-model-build model /opt/maxkb/app/model +COPY --from=web-build ui /opt/maxkb/app/ui # 复制模型 RUN mv /opt/maxkb/app/model/* /opt/maxkb/model RUN ls /opt/maxkb/model @@ -22,7 +38,7 @@ RUN pip3 install poetry # 导出依赖 RUN poetry export -f requirements.txt --output requirements.txt --without-hashes # 下载python依赖 -RUN pip3 install --no-cache-dir -r requirements.txt --trusted-host pypi.tuna.tsinghua.edu.cn +RUN pip3 install --no-cache-dir -r requirements.txt # 删除前端依赖 RUN rm -rf ui/node_modules # 启动命令