无法将特定文件复制到 Docker 文件中的 /app



我想把我文件夹中的所有python、.py文件复制到我的/app文件夹中,根据这个SO问题,我应该可以只做

FROM python:3.10.2-slim-bullseye
#Copy stuff into /app
COPY ./*.py /app
# set workdir as "/app"
WORKDIR /app 
#run
python train.py

但是当它到达第三行CCD_ 4时抛出错误CCD_。

我试过几个";版本";即COPY *.py /appCOPY /*.py /app,但两者都不起的作用

如果我只复制所有内容,即COPY . /app,它可以很好地工作,但我不想用我不需要的东西浮动我的.dockerignore,我只想复制我的python文件。

您需要首先创建应用程序目录

FROM python:3.10.2-slim-bullseye
# Create directory
RUN mkdir /app
#Copy stuff into /app
COPY ./*.py /app
# set workdir as "/app"
WORKDIR /app 
#run
python train.py
DockerfileCOPY指令对右侧的语法有一些挑剔的规则。文件目前说明:

如果直接或由于使用通配符指定了多个<src>资源,则<dest>必须是一个目录,并且必须以斜线/结尾。

如果<dest>没有以尾部斜杠结尾,则它将被视为常规文件,并且<src>的内容将在<dest>处写入。

因此,当您将单个*.py文件COPY/app而不带尾部斜杠时,Dockerfile会创建一个名为/app文件,即单个Python文件。然后,您从WORKDIR中得到错误,即/app不是目录,而是Python文件。

确保COPY的右侧以斜线结尾:

COPY *.py /app/ # <-- ends with /

相关内容

最新更新