在 circleci 作业中构建时,Dockerfile ADD 语句无法访问我的 src 文件夹
Dockerfile ADD statement can't acces my src folder when building inside a circleci job
我已经开始为 CI 使用 circleci(我是新手),我想构建一个 docker 图像并将其推送到 circleci 作业中的 dockerhub .
问题是docker文件的ADD语句,错误说
ADD failed: stat /var/lib/docker/tmp/docker-builder814373370/app/build: no such file or directory
docker build
在本地工作正常。问题似乎是 'remote environment' 由 circleci 创建以在作业内执行 docker cmd(当作业在容器内执行时)。我尝试了多种方法将我的文件夹共享到远程环境,但没有任何效果。我还尝试在 'machine' 中执行我的工作以摆脱 'remote environment' 但它给了我更多的错误。
我想我可以通过将我的项目在线存储在另一个作业中,然后通过 https 将文件夹添加到 docker 文件中来实现。但我很确定有更快的方法,我只是没有看到它。
这是我的docker文件:
FROM ubuntu:20.04
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update -yq && apt-get -yq install nodejs npm && npm install serve -g
ADD app/build/ /app
EXPOSE 5000
CMD serve -s /app -l 5000
和我的 circleci 工作:
working_directory: ~/project/
docker:
- image: circleci/buildpack-deps:stretch
steps:
- checkout
- setup_remote_docker
- run:
name: Build Docker image
command: sudo docker build . -t $IMAGE_NAME:latest
我通过将工件存储在另一个作业中,然后在 dockerfile
的 运行 语句中使用 curl 和 wget 通过 https 添加文件夹来实现它
我已经开始为 CI 使用 circleci(我是新手),我想构建一个 docker 图像并将其推送到 circleci 作业中的 dockerhub .
问题是docker文件的ADD语句,错误说
ADD failed: stat /var/lib/docker/tmp/docker-builder814373370/app/build: no such file or directory
docker build
在本地工作正常。问题似乎是 'remote environment' 由 circleci 创建以在作业内执行 docker cmd(当作业在容器内执行时)。我尝试了多种方法将我的文件夹共享到远程环境,但没有任何效果。我还尝试在 'machine' 中执行我的工作以摆脱 'remote environment' 但它给了我更多的错误。
我想我可以通过将我的项目在线存储在另一个作业中,然后通过 https 将文件夹添加到 docker 文件中来实现。但我很确定有更快的方法,我只是没有看到它。
这是我的docker文件:
FROM ubuntu:20.04
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update -yq && apt-get -yq install nodejs npm && npm install serve -g
ADD app/build/ /app
EXPOSE 5000
CMD serve -s /app -l 5000
和我的 circleci 工作:
working_directory: ~/project/
docker:
- image: circleci/buildpack-deps:stretch
steps:
- checkout
- setup_remote_docker
- run:
name: Build Docker image
command: sudo docker build . -t $IMAGE_NAME:latest
我通过将工件存储在另一个作业中,然后在 dockerfile
的 运行 语句中使用 curl 和 wget 通过 https 添加文件夹来实现它