diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index f9b5e6658..9b736e9d8 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -12,35 +12,17 @@ on: - "*.*.*" - "*.*.*-*" +# Workflow's jobs jobs: - build-amd64: - name: Build AMD64 Image + docker: runs-on: ubuntu-latest - env: - DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USERNAME }} steps: - - name: Checkout code + - name: Check out git repository uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Clone maim_message - run: git clone https://github.com/MaiM-with-u/maim_message maim_message - - - name: Clone lpmm - run: git clone https://github.com/MaiM-with-u/MaiMBot-LPMM.git MaiMBot-LPMM - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - buildkitd-flags: --debug - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - + # Generate metadata for Docker images - name: Docker meta id: meta uses: docker/metadata-action@v5 @@ -55,120 +37,50 @@ jobs: type=semver,pattern={{major}} type=sha - - name: Build and Push AMD64 Docker Image - uses: docker/build-push-action@v5 - with: - context: . - file: ./Dockerfile - platforms: linux/amd64 - tags: ${{ secrets.DOCKERHUB_USERNAME }}/maibot:amd64-${{ github.sha }} - push: true - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:amd64-buildcache - cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:amd64-buildcache,mode=max - labels: ${{ steps.meta.outputs.labels }} - provenance: true - sbom: true - build-args: | - BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') - VCS_REF=${{ github.sha }} - outputs: type=image,push=true + # Outputting basic information + - name: Print basic information + run: | + echo "Generated tags: ${{ steps.meta.outputs.tags }}" + echo "Generated labels: ${{ steps.meta.outputs.labels }}" - build-arm64: - name: Build ARM64 Image - runs-on: ubuntu-latest - env: - DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USERNAME }} - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 + # Clone required dependencies + - name: Clone maim_message + run: git clone https://github.com/MaiM-with-u/maim_message maim_message + + - name: Clone lpmm + run: git clone https://github.com/MaiM-with-u/MaiMBot-LPMM.git MaiMBot-LPMM - name: Set up QEMU uses: docker/setup-qemu-action@v3 - - - name: Clone maim_message - run: git clone https://github.com/MaiM-with-u/maim_message maim_message - - - name: Clone lpmm - run: git clone https://github.com/MaiM-with-u/MaiMBot-LPMM.git MaiMBot-LPMM + with: + platforms: amd64,arm64 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: buildkitd-flags: --debug - - name: Login to Docker Hub + # Log in docker hub + - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ secrets.DOCKERHUB_USERNAME }}/maibot - tags: | - type=ref,event=branch - type=ref,event=tag - type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - - - name: Build and Push ARM64 Docker Image + # Packaging and sending to Docker + - name: Build and push uses: docker/build-push-action@v5 with: context: . - file: ./Dockerfile - platforms: linux/arm64 - tags: ${{ secrets.DOCKERHUB_USERNAME }}/maibot:arm64-${{ github.sha }} push: true - cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:arm64-buildcache - cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:arm64-buildcache,mode=max + platforms: linux/amd64,linux/arm64/v8 + tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + file: ./Dockerfile + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:buildcache + cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:buildcache,mode=max provenance: true sbom: true build-args: | BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') - VCS_REF=${{ github.sha }} - outputs: type=image,push=true - - create-manifest: - name: Create Multi-Arch Manifest - runs-on: ubuntu-latest - needs: - - build-amd64 - - build-arm64 - steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ secrets.DOCKERHUB_USERNAME }}/maibot - tags: | - type=ref,event=branch - type=ref,event=tag - type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - - - name: Create and Push Manifest - run: | - # 为每个标签创建多架构镜像 - for tag in $(echo "${{ steps.meta.outputs.tags }}" | tr '\n' ' '); do - echo "Creating manifest for $tag" - docker buildx imagetools create -t $tag \ - ${{ secrets.DOCKERHUB_USERNAME }}/maibot:amd64-${{ github.sha }} \ - ${{ secrets.DOCKERHUB_USERNAME }}/maibot:arm64-${{ github.sha }} - done \ No newline at end of file + VCS_REF=${{ github.sha }} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index b2ce0a31e..a85b00748 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,7 +17,6 @@ services: restart: always networks: - maim_bot - core: container_name: maim-bot-core #### prod #### @@ -40,7 +39,6 @@ services: restart: always networks: - maim_bot - napcat: environment: - NAPCAT_UID=1000 @@ -57,20 +55,28 @@ services: image: mlikiowa/napcat-docker:latest networks: - maim_bot - - sqlite-web: - image: coleifer/sqlite-web - container_name: sqlite-web + # sqlite-web: + # image: coleifer/sqlite-web + # container_name: sqlite-web + # restart: always + # ports: + # - "8120:8080" + # volumes: + # - ./data/MaiMBot:/data/MaiMBot + # environment: + # - SQLITE_DATABASE=MaiMBot/MaiBot.db # 你的数据库文件 + # networks: + # - maim_bot + chat2db: + image: chat2db/chat2db:latest + container_name: maim-bot-chat2db restart: always ports: - - "8120:8080" + - "10824:10824" volumes: - ./data/MaiMBot:/data/MaiMBot - environment: - - SQLITE_DATABASE=MaiMBot/MaiBot.db # 你的数据库文件 networks: - maim_bot - networks: maim_bot: driver: bridge