gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:18:40 25 4
gpt4 key购买 nike

我有一个运行在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容器的创建?

    任何帮助是极大的赞赏。

    最佳答案

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

    [编辑]
    原因:.dockerignore文件包含多行,这些行将忽略不是includesrc或文件CMakeLists.txt的每个文件夹:

    !include
    !src
    !CMakeLists.txt

    因此它们没有被复制。

    关于docker - docker-compose不将文件复制到tmp文件夹中以创建容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61630126/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com