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)