我有一个 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,这是在出现问题时构建图像的地方,但我不知道。