我想创建一个泊坞窗图片。这是我的工作目录: Dockerfile.in test.json test.py
这是我的Dockerfile:
COPY ./test.json /home/test.json
COPY ./test.py /home/test.py
RUN python test.py
当我启动此命令时:
docker build -f Dockerfile.in -t 637268723/test:1.0 .
它给了我这个错误:
`Step 1/5 : COPY ./test.json /home/test.json
---> Using cache
---> 6774cd225d60
Step 2/5 : COPY ./test.py /home/test.py
COPY failed: stat /var/lib/docker/tmp/docker-builder428014112/test.py:
no such file or directory`
任何人都可以帮助我吗?
答案 0 :(得分:9)
您应该将这些文件放入Dockerfile的同一目录中。
答案 1 :(得分:4)
我必须使用以下命令来开始构建:
docker build .
答案 2 :(得分:3)
.dockerignore
文件,要复制的文件或目录可能在忽略文件列表中!答案 3 :(得分:1)
在您的情况下,删除./应该可以解决问题。我还有另一种情况,我正在使用父目录中的目录,并且 docker只能访问存在Dockerfile的目录下的文件 所以如果我有目录结构/ root / dir和Dockerfile / root / dir / Dockerfile
我无法复制执行以下操作
COPY root/src /opt/src
答案 4 :(得分:1)
我也面临着同样的问题,我将docker文件移到了项目的根目录。然后成功了
答案 5 :(得分:1)
从源路径中删除./
可以解决您的问题:
COPY test.json /home/test.json
COPY test.py /home/test.py
答案 6 :(得分:1)
就我而言,正是注释行弄乱了COPY命令
我在COPY命令之后删除了注释,并将其放在命令上方的专用行中。令人惊讶的是,它解决了这个问题。
错误的Dockerfile命令
<dimen name="thirty">30</dimen>
有效的Dockerfile命令
COPY qt-downloader . # https://github.com/engnr/qt-downloader -> contains the script to auto download qt for different architectures and versions
希望它对某人有帮助。
答案 7 :(得分:1)
确保正确设置了用于构建图像的上下文。您可以在构建参数时设置上下文。
例:
docker build -f ./Dockerfile ..
,其中“ ..”是此示例中的上下文。
答案 8 :(得分:0)
这可能会帮助面临类似问题的其他人。
与其将文件浮动在与Dockerfile相同的目录中,不如创建目录并放置要复制的文件,然后尝试。
COPY mydir/test.json /home/test.json
COPY mydir/test.json /home/test.json
答案 9 :(得分:0)
添加 .dockerignore
!mydir/test.json
!mydir/test.json
答案 10 :(得分:0)
这是发生这种情况的原因,即运行docker的主机操作系统中的本地目录应具有该文件,否则会出现此错误
一种解决方案是:
使用RUN cp <src> <dst>
而不是
COPY <src> <dst>
然后运行有效的命令!
答案 11 :(得分:0)
另一个可能的原因是,默认情况下docker将不遵循符号链接(即,不使用ln -s
)。
答案 12 :(得分:0)
泊坞窗从当前目录查找文件的方式 也就是说,如果您的命令是
COPY target / xyz.jar app.jar
ADD target / xyz.jar app.jar
xyz jar应该位于当前目录/目标目录中-这里current是存放docker文件的位置。 因此,如果您在其他目录中有docker。最好将其带到主项目目录,并有一条直接的路径指向要添加或复制到映像的jar。
答案 13 :(得分:0)
使用Docker撰写文件时,发布,发布到obj / Docker / Publish。当我将文件复制到此处并将Dockerfile指向该目录(生成时)时,它就可以工作了……
答案 14 :(得分:0)
.tgz文件存在相同的问题。
这只是关于文件的位置。确保文件位于Dockerfile的同一目录中。
还要确保.dockerignore文件目录不排除文件正则表达式模式。
答案 15 :(得分:0)
就我而言,我必须将所有项目文件放入一个子目录
app -|inside app directory we have the following
| package.js
| src
| assets
Dockerfile
然后我以他的方式复制文件
COPY app ./
答案 16 :(得分:0)
我在尝试构建 docker 镜像并推送到容器注册表时遇到了这样的错误。在我的 docker 文件中,我尝试从目标文件夹复制一个 jar 文件并尝试使用 java -jar 命令执行它。
我通过从 .gitignore 文件中删除 .jar 文件和目标文件夹来解决这个问题。
答案 17 :(得分:-1)
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<images>
<image>
<name>imagenam</name>
<alias>dockerfile</alias>
<build>
<!-- filter>@</filter-->
<dockerFileDir>dockerfile loaction</dockerFileDir>
<tags>
<tag>latest</tag>
<tag>0.0.1</tag>
</tags>
</build>
<run>
<ports>
<port>8080:8080</port>
</ports>
</run>
</image>
</images>
</configuration>
</plugin>
答案 18 :(得分:-1)
docker-compose.yaml中的以下结构将使您可以从根目录的子文件夹中获取Dockerfile:
version: '3'
services:
db:
image: postgres:11
environment:
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- postgres-data:/var/lib/postgresql/data
ports:
- 127.0.0.1:5432:5432
**web:
build:
context: ".."
dockerfile: dockerfiles/Dockerfile**
command: ...
...
然后,在与docker-compose.yaml位于同一目录的Dockerfile中,您可以执行以下操作:
ENV APP_HOME /home
RUN mkdir -p ${APP_HOME}
# Copy the file to the directory in the container
COPY test.json ${APP_HOME}/test.json
COPY test.py ${APP_HOME}/test.py
# Browse to that directory created above
WORKDIR ${APP_HOME}
然后您可以从父目录运行docker-compose,例如:
docker-compose -f .\dockerfiles\docker-compose.yaml build --no-cache