diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..92c02acca --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.git* \ No newline at end of file diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml index 7614f99bd..39e8d8ddd 100644 --- a/.github/workflows/build-and-push.yml +++ b/.github/workflows/build-and-push.yml @@ -16,9 +16,19 @@ on: - linux/amd64 - linux/arm64 - linux/amd64,linux/arm64 + registry: + description: 'Push To Registry' + required: true + default: 'dockerhub, fit2cloud-registry' + type: choice + options: + - dockerhub + - fit2cloud-registry + - dockerhub, fit2cloud-registry jobs: - build-and-push: + build-and-push-to-fit2cloud-registry: + if: contains(${{ github.event.inputs.registry }}, 'fit2cloud') runs-on: ubuntu-latest steps: - name: Check Disk Space @@ -42,12 +52,14 @@ jobs: - name: Prepare id: prepare run: | - DOCKER_IMAGE_FIT2CLOUD=registry-hkproxy.fit2cloud.com/maxkb/maxkb - DOCKER_IMAGE_DOCKERHUB=1panel/maxkb + DOCKER_IMAGE=registry-hkproxy.fit2cloud.com/maxkb/maxkb DOCKER_PLATFORMS=${{ github.event.inputs.architecture }} TAG_NAME=${{ github.event.inputs.dockerImageTag }} - DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE_FIT2CLOUD}:${TAG_NAME} --tag ${DOCKER_IMAGE_FIT2CLOUD}:latest --tag ${DOCKER_IMAGE_DOCKERHUB}:${TAG_NAME} --tag ${DOCKER_IMAGE_DOCKERHUB}:latest" - echo ::set-output name=version::${TAG_NAME} + if [[ TAG_NAME == *dev* ]]; then + DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME}" + else + DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME} --tag ${DOCKER_IMAGE}:latest" + fi echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} --no-cache \ ${DOCKER_IMAGE_TAGS} . - name: Set up QEMU @@ -66,6 +78,55 @@ jobs: registry: registry-hkproxy.fit2cloud.com username: ${{ secrets.FIT2CLOUD_REGISTRY_USERNAME }} password: ${{ secrets.FIT2CLOUD_REGISTRY_PASSWORD }} + - name: Docker Buildx (build-and-push) + run: | + docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }} -f installer/Dockerfile + + build-and-push-to-dockerhub: + if: contains(${{ github.event.inputs.registry }}, 'dockerhub') + runs-on: ubuntu-latest + steps: + - name: Check Disk Space + run: df -h + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: true + swap-storage: true + - name: Check Disk Space + run: df -h + - name: Checkout + uses: actions/checkout@v4 + with: + ref: main + - name: Prepare + id: prepare + run: | + DOCKER_IMAGE=1panel/maxkb + DOCKER_PLATFORMS=${{ github.event.inputs.architecture }} + TAG_NAME=${{ github.event.inputs.dockerImageTag }} + if [[ TAG_NAME == *dev* ]]; then + DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME}" + else + DOCKER_IMAGE_TAGS="--tag ${DOCKER_IMAGE}:${TAG_NAME} --tag ${DOCKER_IMAGE}:latest" + fi + echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} --no-cache \ + ${DOCKER_IMAGE_TAGS} . + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GH_TOKEN }} - name: Login to Docker Hub uses: docker/login-action@v3 with: diff --git a/README.md b/README.md index e74d7f148..78b6fcc0e 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,23 @@ docker run -d --name=maxkb -p 8000:8000 ghcr.io/1panel-dev/maxkb 也可以通过 [1Panel 应用商店](https://apps.fit2cloud.com/1panel) 快速部署 MaxKB + Ollama(Llama 2),30 分钟内即可上线基于本地大模型的知识库问答系统。 + ## UI 展示 + + + + + + + + + +
Demo1Demo2
Demo3Demo4
-TBD +## 社区交流 -## 微信交流群 +[论坛](https://bbs.fit2cloud.com/c/mk/11) -TBD ## 技术栈 diff --git a/installer/Dockerfile b/installer/Dockerfile index ac81d8aeb..50dff3c1a 100644 --- a/installer/Dockerfile +++ b/installer/Dockerfile @@ -4,37 +4,29 @@ FROM node:18-alpine3.18 as web-build COPY ui ui RUN cd ui && \ npm install && \ - npm run build && \ - rm -rf ./node_modules + npm run build FROM ghcr.io/1panel-dev/maxkb-python-pg:python3.11.8-pg15.3 # 创建工作目录 RUN mkdir -p /opt/maxkb/app && mkdir -p /opt/maxkb/model && mkdir -p /opt/maxkb/conf # 拷贝项目 COPY . /opt/maxkb/app +RUN rm -rf /opt/maxkb/app/ui/* COPY installer/config.yaml /opt/maxkb/conf +COPY --from=vector-model model /opt/maxkb/app/model +COPY --from=web-build ui/dist /opt/maxkb/app/ui ENV POSTGRES_USER root ENV POSTGRES_PASSWORD Password123@postgres -RUN rm -rf /opt/maxkb/app/ui /opt/maxkb/app/build -COPY --from=vector-model model /opt/maxkb/app/model -COPY --from=web-build ui /opt/maxkb/app/ui -RUN ls -la /opt/maxkb/app -# 复制模型 -RUN mv /opt/maxkb/app/model/* /opt/maxkb/model -RUN ls /opt/maxkb/model -RUN cp -r /opt/maxkb/model/base/hub /opt/maxkb/model/tokenizer -# 设置工作目录 WORKDIR /opt/maxkb/app -# 更新apt-get包管理器 -RUN apt-get update&&apt-get install -y curl -# 更新pip -RUN pip3 install --upgrade pip -# 安装 poetry包管理器 -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 +RUN mv /opt/maxkb/app/model/* /opt/maxkb/model && \ + cp -r /opt/maxkb/model/base/hub /opt/maxkb/model/tokenizer && \ + apt-get update && apt-get install -y curl && \ + pip3 install --upgrade pip && \ + pip3 install poetry && \ + poetry export -f requirements.txt --output requirements.txt --without-hashes && \ + pip3 install --no-cache-dir -r requirements.txt && \ + pip3 cache purge && \ + rm -rf /var/lib/apt/lists/* # 启动命令 VOLUME /opt/maxkb/conf EXPOSE 8000