【发布时间】:2021-12-30 16:06:04
【问题描述】:
我试图在我的 DockerFile 中使用 wget 来下载一个需要密码才能执行此操作的文件,所以在 docker-compose.yml 我尝试向 args 添加一个从主机读取变量并将其传递给 DockerFile 的变量但我无法弄清楚我在这里做错了什么。 整个过程在可视化代码工作室中运行
在 devcontainer.json 中
...
"containerEnv": {
"${localEnv:PRIVATE_TOKEN}"
},
"remoteEnv": {
"${localEnv:PRIVATE_TOKEN}"
},
...
.bashrc 内:
...
MY_PASSWORD='123'
在 Docker-Compose 中
version: '3.8'
services:
my_service:
image: ...
build:
...
args:
MY_PASSWORD: ${MY_PASSWORD}
...
在 Dockerfile 内部:
ARG MY_PASSWORD
RUN wget --progress=dot:giga -O my_file.tgz remot_link_to_my_file --header "MY_PASSWORD: $MY_PASSWORD"
在 Docker-compose 中,我将 ${MY_PASSWORD} 更改为实际值,它确实有效。
【问题讨论】:
-
你在使用wsl(2)和vscode吗?你也混淆了数组和对象的语法。
-
我在archlinux上使用vscode,你能详细说明那部分混淆了吗?
-
见下面的答案。这就是 yaml 对象语法。没有等号。
-
如果你使用 vscode + wsl 2 那么 bashrc 不是来自 devcontainer。你需要把它放在.profile中。
-
我不使用 WSL,只使用 vscode 和很好的语法,它只是在这里而不是在我的真实代码中:)
标签: docker visual-studio-code docker-compose environment-variables