在 Dockerfile CMD 中使用 docker ARG

Posted

技术标签:

【中文标题】在 Dockerfile CMD 中使用 docker ARG【英文标题】:Use docker ARG in Dockerfile CMD 【发布时间】:2022-01-20 09:47:33 【问题描述】:

如何在 docker cmd 命令中使用 ARG?

FROM python:3.6.8

ARG profile=production
ENV profile $profile

ENTRYPOINT [ "export SETTINGS=/opt/$profile.cfg" ]
CMD [ "python", "-m" ,"acalls_clasiffier"]

这是出现的错误:

exec: "export SETTINGS=/opt/$profile.cfg": stat export SETTINGS=/opt/$profile.cfg: 没有这样的文件或目录:未知

【问题讨论】:

【参考方案1】:

这有很多问题:

不使用 exec 语法将 args 分隔为单独的数组条目 尝试使用带有 exec 语法的变量的 shell 扩展 shell 命令的 exec 语法(导出)

但简单的答案是将环境变量定义为 Dockerfile 中的 ENV,或者最好在 compose 文件或 Kubernetes 清单中定义为运行时设置,这样您就不会将配置注入到映像中。由于您只提供了 Dockerfile,因此看起来像:

FROM python:3.6.8

ARG profile=production
ENV profile $profile
ENV SETTINGS /opt/$profile.cfg

CMD [ "python", "-m" ,"acalls_clasiffier"]

【讨论】:

以上是关于在 Dockerfile CMD 中使用 docker ARG的主要内容,如果未能解决你的问题,请参考以下文章

Docke--Dockerfile实践

docke--Dockerfile构建docker镜像

Docke部署springboot jar包项目

Docker 入门:Dockerfile

Docker 入门:Dockerfile

在 Dockerfile CMD 中使用 docker ARG