在 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"]
如何在 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"]