在子shell中处理docker-compose文件中的ARGs
并不容易,但您可以使用docker build
命令和带有键值对的docker-compose来完成此操作。
使用docker-compose命令:
MY_KEY=$(aws ssm get-parameter --name "test" --output text --query Parameter.Value) docker-compose build --no-cache
docker-compose
version: "2.3"
services:
base:
build:
context: .
args:
- PYTHON_ENV=developmen
- API_KEY=${MY_KEY}
在Dockerfile中定义ARG,并在构建时运行子shell以获取SSM参数值。
FROM alpine
ARG API_KEY=default
ENV API_KEY="$API_KEY"
RUN echo "API_KEY is : $API_KEY"
在构建过程中,使用aws-cli
获取值。
docker build --no-cache --build-arg API_KEY="$(aws ssm get-parameter --name "test" --output text --query Parameter.Value)" -t myimage .
使用docker-compose时,您还可以尝试使用系统环境变量。
version: "2.3"
services:
base:
build:
context: .
args:
- PYTHON_ENV=developmen
- API_KEY=${MY_KEY}
在使用docker-compose之前,请将其作为ENV导出。
export MY_KEY=$(aws ssm get-parameter --name "test" --output text --query Parameter.Value) && docker-compose build --no-cache
API_KEY
?只有当你的 Docker 容器包含该变量时,才能设置该变量。然后按照我的答案在 docker-compose 和 .env 文件中进行定义 https://stackoverflow.com/questions/57861914/load-environment-variables-from-env-file-with-docker-and-php/57873096#57873096#answer-57873096 - Jinna Balu