Dockerコンテナに環境変数を渡すにはどうすればいいですか? 質問する

Dockerコンテナに環境変数を渡すにはどうすればいいですか? 質問する

コンテナから外部データベースにアクセスするにはどうすればよいでしょうか? 接続文字列にハードコードするのが最善の方法でしょうか?

# Dockerfile
ENV DATABASE_URL amazon:rds/connection?string

ベストアンサー1

-e(alias --env) フラグを使用して、コンテナに環境変数を渡すことができます。

docker run -e xx=yy

起動スクリプトの例:

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ファイルを使用する:

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

--env-file フラグはファイル名を引数として受け取り、各行は --env に渡される引数を模倣した VAR=VAL 形式である必要があります。コメント行には # をプレフィックスとして付ける必要があります。

おすすめ記事