当前位置: 首页 > 面试题库 >

如何在Dockerfile CMD中使用变量?

翟凯
2023-03-14
问题内容

在我的Dockerfile中:

ENV PROJECTNAME mytestwebsite
CMD ["django-admin", "startproject", "$PROJECTNAME"]

错误:

CommandError: '$PROJECTNAME' is not a valid project name

最快的解决方法是什么?Docker是否有计划“修复”或在更高版本的Docker中引入此功能?

注意:如果我从Docker文件中删除CMD行,然后运行Docker容器,则能够从容器内部手动运行Django-admin startproject $
PROJECTNAME,它将创建项目…


问题答案:

当您使用执行列表时,如…

CMD ["django-admin", "startproject", "$PROJECTNAME"]

…然后Docker将 直接 执行给定的命令,而无需使用shell。由于不涉及任何外壳,这意味着:

  • 无变量扩展
  • 没有通配符扩展
  • 没有I / O重定向功能><|
  • 没有多个命令通过 command1; command2
  • 依此类推。

如果要CMD扩展变量,则需要安排一个shell。您可以这样做:

CMD ["sh", "-c", "django-admin startproject $PROJECTNAME"]

或者,您可以使用简单的字符串而不是执行列表,这将使您得到的结果与前面的示例大致相同:

CMD django-admin startproject $PROJECTNAME


 类似资料:
  • 问题内容: 我听说我们可以在CSS中声明/定义变量,并将其像全局变量一样使用: 所以有人知道如何使用它们吗? 问题答案: 为此,您需要使用CSS动态语言的 Less 或 Sass。

  • 问题内容: Maven有一个功能,我在package.json中非常想念。在maven .pom文件中,您可以在父项目中定义变量,并在子项目的pom文件中使用它们。 npm中有类似的东西吗?我们正在构建模块化项目,我想集中定义依赖项版本,并在相应的package.json文件中使用它们。 谢谢 问题答案: 可以引用任何键,对于您所下的每个级别,都可以开头并添加下划线。 例: 名称可以像这样访问:或

  • 问题内容: 我需要在Hibernate中使用带有变量的本地SQL查询。 但是hibernate抛出错误信息:参数前缀后不允许有空格 因此,与:= mysql变量分配和hibernate变量分配存在冲突。 这是我的SQL查询: hibernate代码(jpa语法): 我无法使用存储过程,因为我的SQL查询是动态生成的(“ Level”可以是“ int”或“ force” …) 我怎样才能做到这一点

  • 我想在单击按钮时打印我的产品详细信息。 我有两个字典Watchs和TV 这里是我的javascript代码,在此我使用函数打印字典的值,并使用保存字典的名称。但当我编写时,输出是未定义的。 但当我单击“手表”按钮和时,它会将输出作为手表给我,或者单击“电视”按钮和时,它会将输出作为电视给我。 那么为什么不起作用。 null null

  • 在我的DockerFile中: 错误: 这里最快的变通办法是什么?Docker是否有计划在Docker的后续版本中“修复”或引入此功能? 注意:如果我从Docker文件中删除CMD行,然后运行Docker容器,我可以从容器中手动运行Django-admin startproject$projectname,它将创建项目...

  • 问题内容: 我想根据用户选择的值导入一些软件包。 默认值为: 如果用户选择,则应为: 在PHP中,我可以使用变量variable来做到这一点: 如何在Python中执行此操作? 问题答案: Python没有与PHP的“变量变量”直接等效的功能。要获取“变量变量”的值(或任何其他表达式的值),可以使用该函数。 但是,这不能在语句中使用。 可以使用该函数通过变量导入。 相当于