【问题标题】:Variable substitution in docker-compose.yml file when running docker-compose with sudo使用 sudo 运行 docker-compose 时 docker-compose.yml 文件中的变量替换
【发布时间】:2023-11-22 03:36:02
【问题描述】:

我目前正在尝试在 docker-compse.yml 文件中使用变量替换。该文件包含以下内容:

jenkins:
  image: "jenkins:${JENKINS_VERSION}"
  external_links:
      - mongodb:mongo
  ports:
    - 8000:8080

下图显示了当我尝试启动一切时会发生什么。

如您所见,docker-compose 显示一条警告,指出该变量未设置。我怀疑这是由于使用 sudo 启动 docker-compose 造成的。我的设置(一个可以通过卷挂载访问 docker 和 docker-compose 的 Jenkins docker 容器)目前需要使用 sudo。 to stop docker requiring sudo 会更好,还是有其他方法可以在不更改当前设置的情况下解决此问题?

【问题讨论】:

  • 尝试将 docker 添加到您的用户组,这样您就不必一次又一次地使用 sudo。同时在您的用户组中注销并再次登录以使其正常工作。
  • 您可以在脚本中设置 var,然后从脚本中启动 compose 并将其传递给 var

标签: docker environment-variables sudo docker-compose


【解决方案1】:

sudo -E 运行命令时保留用户环境。它应该做你想做的。

【讨论】:

  • 这行得通!为了澄清,我使用以下命令使其工作:JENKINS_VERSION=123 sudo -E docker-compose up
  • 我想知道是否有办法用多个变量来做到这一点? JENKINS_VERSION=123 && JENKINS_TEST=456 sudo -E docker-compose up 不工作(显然),我不喜欢将变量添加到 sudoers 文件或类似的东西。
  • 找到了! export JENKINS_VERSION=123 && export JENKINS_TEST=456 && sudo -E docker-compose up
  • 我认为您可以将它们用空格分隔,它会起作用JENKINS_VERSION=123 JENKINS_TEST=456 sudo -E docker-compose up
最近更新 更多