小编典典

如何将环境变量传递给 Docker 容器?

all

我是 Docker 新手,不清楚如何从容器访问外部数据库。在连接字符串中硬编码的最佳方法是什么?

# Dockerfile
ENV DATABASE_URL amazon:rds/connection?string

阅读 122

收藏
2022-02-28

共1个答案

小编典典

-e您可以使用标志将环境变量传递给您的容器。

启动脚本的示例:

sudo docker run -d -t -i -e REDIS_NAMESPACE='staging' \ 
-e POSTGRES_ENV_POSTGRES_PASSWORD='foo' \
-e POSTGRES_ENV_POSTGRES_USER='bar' \
-e POSTGRES_ENV_DB_NAME='mysite_staging' \
-e POSTGRES_PORT_5432_TCP_ADDR='docker-db-1.hidden.us-east-1.rds.amazonaws.com' \
-e SITE_URL='staging.mysite.com' \
-p 80:80 \
--link redis:redis \  
--name container_name dockerhub_id/image_name

或者,如果您不希望在命令行中显示该值ps-e则可以从当前环境中提取该值,如果您不使用=:

sudo PASSWORD='foo' docker run  [...] -e PASSWORD [...]

如果你有很多环境变量,特别是如果它们是保密的,你可以使用 env-
file

$ docker run --env-file ./env.list ubuntu bash

--env-file 标志将文件名作为参数,并期望每一行采用 VAR=VAL 格式,模仿传递给 –env 的参数。注释行只需要以# 为前缀

2022-02-28