使用不同的环境变量重新启动 docker

Restart docker with different environment variable

我有一个 docker-compose 有

myimage:
  image: myimage:latest
  environment:
    MY_VAR: "something"

容器在内部使用 MY_VAR,有时在自动化测试中我想用不同的 MY_VAR 重新启动特定容器(以模拟使用不同环境变量设置的进程重新启动)

有没有办法做到这一点,同时保持 docker-compose 容器的其余部分正常运行?

你不能这样做,你必须重新创建一个容器,因为环境变量在 run 命令中给出(即使使用 docker-compose)。

如@robin.thoni 所说,需要重新创建容器以更改 MY_VAR 值,但您可以通过在撰写 YML 中使用环境变量来简化过程,如下所示:

    myimage:
      image: myimage:latest
      environment:
        - MY_VAR: ${A_ENV_VAR}

和运行这样的容器:


A_ENV_VAR=test docker-compose run myimage