PROXY 環境下でdocker-compose を実行する
2017-04-21 Fri.
社内 PROXY の環境下で docker-compose を実行する場合、コンテナの中に PROXY 情報が渡されず、コンテナ内部からインターネットに出れなくなってしまいます。
(たとえば、go get
やnpm install
ができない。)
対処方法は主に以下の 3 つかと思われます。
docker-compose.yml
内にenvironment
として環境変数を渡す。docker-compose run
時に-e
として環境変数を渡す。env_file
として環境変数の書かれたファイルを指定する。
1. docker-compose.yml
内に environment
として環境変数を渡す。
2. docker-compose run
時に -e
として環境変数を渡す。
$ docker-compose run -e HTTP_PROXY=$HTTP_PROXY -e HTTPS_PROXY=$HTTPS_PROXY golang bash
3. env_file
として環境変数の書かれたファイルを指定する。
比較
1 の方法だと、コマンド実行時に PROXY 情報を入力する必要がありませんが、コード上に PROXY 情報が含まれてしまいます。 例えば OSS の docker-compose を実行する場合や、複数社で共有するリポジトリの場合、また単純にリポジトリに環境情報を含めたくない場合は使えません。
2 の方法だと、内部で必要とされる環境変数が増えるほどコマンドが長くなります。(ALL_PROXY や NO_PROXY が必要とされる場面など) しかし、Makefile 等にコマンドを設定することで対処はできます。(利用者が環境変数に設定している前提にはなりますが)
3 の方法だと、リポジトリに含めず.env のみ配布すれば設定できます。
結論
3 が便利
参考
Pickup
Under Construction