我们是一个跨平台的开发团队,我们正在尝试设置 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”