docker-compose - Windows 10 的 docker-compose 中的当前目录变量替换
问题描述
我正在尝试在我的 docker-compose 中创建绝对路径,使用变量替换到当前目录的路径。我将这些路径作为环境变量传递到我的容器中。更准确地说,我尝试通过 cd 命令而不是通过 PWD env var 传递它。应该可以在 .env ( https://github.com/docker/compose/issues/4081 ) 中声明 env var。不幸的是,我无法让替换工作。
我尝试了不同的方法:
将 var 声明为 .env 中的环境变量或直接在环境列表中
使用 powershell 和命令提示符运行
对两个 shell 使用 %cd% 和 $pwd
转义 $ 和 %,用额外的 $ 或 % 将它们加倍
docker-compose 的相关部分:
version: "3.2"
services:
jupyter:
environment:
- WORKING_DIR=%cd% # OR $(pwd) OR $VAR
当我使用 .env 时:
VAR=%cd% or ${pwd}
当我在容器中“设置”环境变量时,它只会显示我使用的命令(%cd% 等),就好像它们是字符串一样。
我不太明白 docker-compose 在哪里格式化/执行:在我用来调用 docker-compose 的 shell 中,在我的 docker 守护进程运行的 linux 映像中,等等?
编辑:
- 我尝试了 MacOS 版本,但仍然有问题!(使用足够的 bash 变量替换)
解决方案
不是一个完整的解决方案,但也许你可以编写脚本:
如果您在 docker compose 文件中将 DOCUMENT_ROOT 指定为变量
environment:
- WORKING_DIR=${DOCUMENT_ROOT}
并且在您的工作目录中有一个 .env 文件,其中包含
DOCUMENT_ROOT=./
,然后您可以通过运行使用本地 .env 文件
docker-compose -f /path/to/docker-compose.yml up
推荐阅读
- javascript - 代理在以下上下文中的含义是什么?正如我在 Javascript MDN 中发现的那样
- python - 如何使用python导入路径中的所有文件
- azure - Azure Ad B2C - B2c 如何检查用户是否已登录?
- python - 使用 cython 编译代码后无法运行 pyqt5 应用程序
- linux - User.Identity.IsAuthenticated 在 ASP.NET Core 5 上使用 Apache 反向代理到 Windows 网络上的 Kestrel Razor 页面应用程序返回 false
- android - 在 AutoCompleteTextView 的下拉背景上使用插图
- java - 为什么不能使用 Mediaplayer 从下载路径播放音乐?
- powershell - 为什么 PowerShell Core 7 不能识别 UNC 路径,而 Windows PowerShell 和 cmd 可以?
- python - FileNotFoundError: [WinError 2] The system cannot find the file specified: on visual studio code
- android - Android Sceneform 无法使用 gltf 文件