我正在练习编写 docker-compose.yaml。我创建了 dc_test3 目录,并在其中创建了另外两个目录:服务器和客户端。服务器包含带有“Hello World!”的index.html、一个包含Python服务器代码的文件和一个包含以下代码的docker文件:
FROM python
WORKDIR /server/
COPY ./server/server.py /server/
COPY ./server/index.html /server/
构建docker compose时出现错误
=> 错误 [服务器 4/4] 复制 ./server/index.html /server/ 0.0s
[服务器 4/4] 复制 ./server/index.html /server/:
无法解决:无法计算缓存密钥:无法计算引用 lmy9fbjpe26a5w0ug6iaa7oje::nog5awa09wq2y7ayqse1663wn 的校验和:“/server/index.html”:未找到
指定构建上下文后问题就解决了,但我想知道为什么会发生这种情况,因为COPY ./server/server.py /server/
Docker 不会抱怨。
我从这个网站获取了创建项目的手册https://habr.com/ru/companies/ruvds/articles/450312/
如果您完全按照其说明进行操作,则不会发生错误,但由于某种原因,如果您未经许可进行操作,则会发生这种情况。我想知道原因以及如何在不添加构建上下文的情况下解决此问题。
有一些评论:
WORKDIR
中指定时,不需要指定和命令的绝对路径。该命令的工作方式与终端中相同。例如,这就足够了:ADD
COPY
WORKDIR
cd
COPY ./server/server.py /server/
您尝试使用该命令获取<project_dir>/server/server/server.py
一个不存在的文件,因为对该文件的搜索将从 Dockerfile本身所在的目录开始。这段代码应该可以工作: