docker-compose不将文件复制到tmp文件夹中以创建容器

时间:2020-05-06 07:58:39

标签: docker docker-compose dockerfile

我有一个运行在docker容器中的Telegram机器人的容器,该容器是通过以下Dockerfile构建的:

FROM debian:stretch
RUN apt-get -qq update && apt-get -qq install -y g++ make binutils cmake libssl-dev libboost-sysstem-dev libcurl4-openssl-dev zlib1g-dev
WORKDIR /usr/src/tgbot-cpp
COPY include include
COPY src src
COPY CMakeLists.txt ./
RUN cmake .
# ...

Dockerfile放置在/home/me/docks/tbot/Dockerfile中。

但是,现在我想稍微整理一下文件,即将includesrcCMakeLists.txt放在一个名为containerBuildFiles的子文件夹中(绝对: home/me/docks/tbot/containerBuildFiles),我执行以下操作:

  • 致电docker-compose down
  • 编辑Dockerfile
# ...
 [-] COPY include include
 [-] COPY src src
 [-] COPY CMakeLists.txt ./
 [+] COPY containerBuildFiles ./
# ...
  • mkdir containerBuildFiles
  • mv -t containerBuildFiles include src CMakeLists.txt
  • (为确保确定)docker-compose build --no-cache --force-rm --pull

哪个给我以下输出:

[...]

Step 5/8 : COPY containerBuildFiles ./
ERROR: Service 'tgbot' failed to build: COPY failed: stat /home/docker/tmp/docker-builder654813864/containerBuildFiles: no such file or directory

现在,当我撤消在Dockerfile和目录结构中所做的更改时,一切都恢复正常。

我还尝试将Dockerfile中的路径从containerBuildFiles更改为./containerBuildFiles/home/me/docks/tbot/containerBuildFiles(我知道这是一种不好的做法,但我想尝试一下),或者只是运行docker build . -t tbot_test --no-cache,结果相同。

我的想法是,docker-compose上下文可能未正确更新。显然,来自Docker容器的文件未正确复制到/home/docker/tmp文件夹中。

所以现在我的问题是:如何更新docker-compose上下文,以便将更新后的文件夹再次正确地传递到docker容器的创建中?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

通过删除.dockerignore文件解决了该问题。

[编辑] 原因:.dockerignore文件中的行忽略了不是includesrc或文件CMakeLists.txt的每个文件夹:

!include
!src
!CMakeLists.txt

所以它们没有被复制。

相关问题