0

我有一个 Next.js 项目,我正在从中创建一个 docker 映像,然后通过 Github Actions 发布到 Azure Container Registry。

我的 Dockerfile 如下:

FROM node:12.3.1-alpine

WORKDIR /app
COPY . /app

RUN ["npm", "install"]
RUN ["npm", "run", "test:ci"]
RUN ["npm", "run", "build"]

EXPOSE 80 443
CMD ["npm", "start"]

所以没那么复杂。只是提早我也试过COPY . .

我的意图是将 CWD 中的所有内容复制到该/app文件夹​​中。这包括几个文件和目录,包括一个名为的文件夹public,其中包含几个静态文件。

当我在本地构建它时,它会复制包括public文件夹在内的所有内容。当我通过 Github Actions 运行它并将其推送到 Azure Container Registry 时,除了public文件夹之外,所有内容都将保留。

顺便提一下,我尝试复制public文件夹,将其命名为随机名称,然后同时推送public文件夹和复制的文件夹。管道成功运行,图像已发布到 ACR。
然后我将新推送的图像拉到本地,一切都在那里,包括除了文件夹之外的随机文件public夹!

为了清楚起见,我在拉动它后检查了它的运行docker run -it -p 3000:80 <registry-name>.azurecr.io/<image-name>:<tag> sh情况,然后ls -la.

因此,沿线某处public过滤掉了该文件夹。Next.js 有一个约定,强制我将此文件夹命名为“public”。

相关的 Github Actions 行:

jobs:
  build-image:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Build and push image
        run: |
          docker login $ACR_NAME -u $ACR_USER -p $ACR_PASSWORD
          docker build . --tag "$ACR_NAME/$REPO_NAME:latest" --tag "$ACR_NAME/$REPO_NAME:${{github.run_number}}"
          docker push $ACR_NAME/$REPO_NAME:${{github.run_number}}

我试过 google'ing,但要么我使用了错误的搜索词,要么还没有人遇到这个问题。

这是怎么回事?Dockerfile似乎正在工作(基于本地结果)。我觉得这里要“责备”的是Github Actions,这是在出现问题时构建图像的地方,但我不知道。

4

0 回答 0