无法将使用 github 操作构建的文件夹复制到 docker 镜像中

dcd*_*eiv 4 github docker github-actions

我无法将使用 github 操作构建的 dist 文件夹复制到 docker 映像中...

github 操作文件:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - uses: bahmutov/npm-install@v1
      - run: yarn install
      - run: yarn workspace client build
      - run: bash collectclient.sh

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ctrlmaniac
          password: ${{ secrets.DOCKERHUB_PASSWORD }}

      - name: Build and push
        uses: docker/build-push-action@v3
        with:
          push: true
          tags: ctrlmaniac/me:latest
Run Code Online (Sandbox Code Playgroud)

collectclient.sh文件将简单地将构建文件夹复制到项目的根目录中并将其重命名为 public。

#!/usr/bin/bash

echo "Removing old files"
rm -rf public

echo "Copying new files"
cp -r packages/client/build public
Run Code Online (Sandbox Code Playgroud)

但是,当我构建 docker 映像时,找不到 public 文件夹。

docker文件

FROM golang:1.19.4-alpine3.17

WORKDIR /home

COPY main/main.go /home/main/main.go
COPY public/ /home/public

RUN go build -o /home/server main/main.go
RUN go install /home/server

CMD ["server"]
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

小智 8

看起来像是 的行为docker/build-push-action

根据他们的文件

请小心,因为构建步骤之前的步骤中的任何文件突变都将被忽略,包括 .dockerignore 文件的处理,因为上下文基于 Git 引用。但是,您可以使用 Path 上下文(将上下文输入与 actions/checkout 操作一起使用)来消除此限制。

您可以添加context: .以包含步骤中的任何文件突变:

      - name: Build and push
        uses: docker/build-push-action@v3
        with:
          context: .
          push: true
          tags: ctrlmaniac/me:latest
Run Code Online (Sandbox Code Playgroud)