运行跨平台docker-compose时如何处理环境变量?

时间:2021-01-29 17:01:19

标签: .net docker docker-compose

我们是一个跨平台的开发团队,我们正在尝试设置 Docker 以供所有人在本地运行。我遇到的一个问题是处理 Windows 和 Linux 系统的环境变量。

目前,这适用于 linux 环境:

docker-compose.yml

version: "3.8"
services:
  web:
    container_name: ddb-app-shell_web
    build:
      context: apps/web
    volumes:
      - $HOME/.microsoft/usersecrets:/root/.microsoft/usersecrets:ro
    environment:
      DOTNET_ENVIRONMENT: "development"
    ports:
      - "8080:80"

要在 Windows 上运行,我们可以创建 docker-compose.windows.yml:

docker-compose.windows.yml

version: "3.8"
services:
  web:
    volumes:
      - $APPDATA\microsoft\usersecrets:/root/.microsoft/usersecrets:ro

而且我们必须运行 docker-compose -f docker-compose.yml -f docker-compose.windows.yml up

有没有办法设置一个 .env 文件来处理这个问题,这样无论平台如何,我们都只需要运行 docker-compose up?我试过了,但它似乎没有评估默认变量,而是将其用作文字文本:

.env

SECRETS_PATH=${HOME/.microsoft/usersecrets:-$APPDATA\microsoft\usersecrets}

docker-compose.yml

...
volumes:
      - $SECRETS_PATH:/root/.microsoft/usersecrets:ro

被评估为“$APPDATA\microsoft\usersecrets”而不是“user\appdata\path\microsoft\usersecrets”

0 个答案:

没有答案