【发布时间】:2026-01-14 02:35:01
【问题描述】:
总结
我正在使用 Visual Studio Code 运行 docker 容器并将我的环境变量作为文件传递。
问题
我正在尝试从其他环境变量动态格式化字符串,但无法解析字符串。
我能够构建容器并且调试终端选项卡显示没有问题。
我目前没有使用 docker-compose.yml,而是使用 Visual Studio .devcontainer 设置。
代码
devcontainer.json
...
"runArgs": [
"--env-file", "${localWorkspaceFolder}/.env.dev"
,
...
.env.dev
DATABASE_DATABASE=database
DATABASE_USER=user
DATABASE_PASSWORD=password
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_DRIVER=postgresql
CONNECTION_STRING=${DATABASE_DRIVER}://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_DATABASE}
输出
当我在 bash 中输入 env 时,它会显示:
DATABASE_DATABASE=database
DATABASE_USER=user
DATABASE_PASSWORD=password
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_DRIVER=postgresql
CONNECTION_STRING=${DATABASE_DRIVER}://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_DATABASE}
我希望它显示在哪里:
DATABASE_DATABASE=database
DATABASE_USER=user
DATABASE_PASSWORD=password
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_DRIVER=postgresql
CONNECTION_STRING=postgresql://user:password@$localhost:5432/database
问题
${VARIABLE_NAME} 的语法不正确吗?
【问题讨论】:
-
我认为你需要用引号括起来:
CONNECTION_STRING="${DATABASE_DRIVER}://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_DATABASE}" -
@peinearydevelopment 感谢您的评论,不幸的是,这只是返回
"${DATABASE_DRIVER}://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_DATABASE}"作为新的环境变量。也许vscode在.env文件中时不解析env变量?
标签: docker visual-studio-code environment-variables vscode-settings