使用变量替换在 docker 中部署堆栈

0 variables environment-variables docker

我正在尝试使用变量替换在 docker 中部署堆栈,但是当我运行时 docker stack deploy --compose-file email.yaml email,我收到无效的引用格式错误。这是我的 email.yaml:

version: '3' 
services:   
  emailservice:
    image: 'email:${VERSION}'
    deploy:
      replicas: 2
      restart_policy:
        condition: on-failure
      resources:
        limits:
          memory: 300 MB
      update_config:
        delay: 12s
    ports:
     - "8000:80"
Run Code Online (Sandbox Code Playgroud)

我已经尝试email:${VERSION}"email:${VERSION}",但它也不起作用。

另一方面,我读到在 docker stack 部署中,我无法使用 .env 文件来传递变量。我该如何通过它们?

谢谢!

小智 6

docker stack deploy默认情况下不处理 .env 文件。这是一个 docker-compose 功能。您可以在一行中对其进行预处理。

docker stack deploy -c <(docker-compose config) stack-name-here
Run Code Online (Sandbox Code Playgroud)

参考: https: //github.com/moby/moby/issues/29133#issuecomment-442912378