在 Dockerfile CMD 中使用 docker ARG

Use docker ARG in Dockerfile CMD

如何在 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: 没有这样的文件或目录:未知

这有很多问题:

  • 不使用 exec 语法将 args 分隔为单独的数组条目
  • 尝试使用 shell 具有 exec 语法的变量扩展
  • 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"]