Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dockerfile入口点没有这样的文件或目录:找不到OCI_Docker_Cmd_Dockerfile_Docker Entrypoint - Fatal编程技术网

Dockerfile入口点没有这样的文件或目录:找不到OCI

Dockerfile入口点没有这样的文件或目录:找不到OCI,docker,cmd,dockerfile,docker-entrypoint,Docker,Cmd,Dockerfile,Docker Entrypoint,我有一个带有Entrypoint的Dockerfile,其中我指定了配置文件变量和可执行文件,但Docker或Entrypoint似乎无法识别它。Mymain.py必须与配置文件一起执行 ENTRYPOINT ["CONFIG_FILE=path/to/config.file ./main.py"] 始终不复制此类文件或目录:未找到OCI 注意:我已经复制了当前工作目录中的所有文件main.py是一个可执行文件。因此,我想问题在于可执行文件之前附加的config变量。有人知

我有一个带有Entrypoint的Dockerfile,其中我指定了配置文件变量和可执行文件,但Docker或Entrypoint似乎无法识别它。My
main.py
必须与配置文件一起执行

ENTRYPOINT ["CONFIG_FILE=path/to/config.file ./main.py"]
始终不复制此类文件或目录:未找到OCI

注意:我已经复制了当前工作目录中的所有文件
main.py
是一个可执行文件。因此,我想问题在于可执行文件之前附加的
config变量
。有人知道那里发生了什么吗?同样,从
ENTRYPOINT
更改为
CMD
也没有帮助

Dockerfile

FROM registry.fedoraproject.org/fedora:34

WORKDIR /home

COPY . /home

ENTRYPOINT ["CONFIG_FILE=path/to/config.file ./main.py"]


如果只需要将环境变量设置为静态字符串,请使用Dockerfile
ENV
指令

ENV CONFIG_FILE=/path/to/CONFIG.FILE
CMD[“/main.py”]
Dockerfile
ENTRYPOINT
CMD
指令(以及
RUN
)有两种形式。您已经使用了JSON数组形式;在这种形式下,不涉及shell,您必须手动拆分单词。(您正在尝试运行一个命令
CONFIG_FILE=../main.py
,其中可执行文件本身需要包含
=
和空格。)如果不使用JSON数组表单,则可以使用shell表单,此表单应该可以工作:

CMD CONFIG_FILE=/path/to/CONFIG.FILE./main.py
一般来说,您应该更喜欢
CMD
而不是
ENTRYPOINT
。有一种相当标准的模式,使用
ENTRYPOINT
进行首次设置,然后执行
CMD
。例如,如果您希望在中绑定装入配置文件,但只想在变量存在时设置该变量,则可以编写shell脚本:

#/垃圾箱/垃圾箱
#entrypoint.sh
#
#如果配置文件存在,请将其设置为环境变量。
CONFIG_FILE=/path/to/CONFIG.FILE
如果[-f“$CONFIG_文件”];然后
导出配置文件
其他的
取消设置配置文件
fi
#运行主容器CMD。
执行官“$@”
然后,您可以指定
入口点(设置环境变量)和
CMD
(说明实际操作)

#入口点必须是JSON数组形式才能工作
入口点[“/”入口点.sh“]
#任何有效的CMD语法都可以
CMD[“/main.py”]
您可以通过提供备用
docker run
命令来再次检查环境变量设置

#(请确保引用某些内容,以便主机shell不会首先展开它们)
docker run--rm my image sh-c'echo$CONFIG\u文件'
docker run--rm-v“$PWD:/path/到“我的图像sh-c'echo$CONFIG_文件”

如果在由docker exec启动的一次性调试shell中使用相同的环境对您很重要,那么在这些方法中,只有Dockerfile
ENV
会使变量在那里可见。在其他情况下,环境变量仅在主容器进程及其子进程中可见,但是
docker exec
进程不是主进程的子进程。

您是否尝试使用ENV指令指定配置?@ssc327我做了,但可能做得不正确或其他,它仍然不起作用
ENV path=path/to/config.file入口点[“config_file=${path}./main.py”]
请共享您的dockerfile@ssc327我在我的问题中添加了它。您是否尝试过registry.fedoraproject.org/fedora:34 ENV CONFIG_FILE=path/to/CONFIG.FILE WORKDIR/home COPY/home ENTRYPOINT[“/home/main.py”非常感谢您的回答。