blog.euxn.me

PROXY 環境下でdocker-compose を実行する

2017-04-21 Fri.

社内 PROXY の環境下で docker-compose を実行する場合、コンテナの中に PROXY 情報が渡されず、コンテナ内部からインターネットに出れなくなってしまいます。 (たとえば、go getnpm install ができない。) 対処方法は主に以下の 3 つかと思われます。

  1. docker-compose.yml 内に environment として環境変数を渡す。
  2. docker-compose run 時に -e として環境変数を渡す。
  3. env_file として環境変数の書かれたファイルを指定する。

1. docker-compose.yml 内に environment として環境変数を渡す。

docker-compose.yml
1golang:
2 image: golang:1.8
3 environment:
4 HTTP_PROXY: http://proxy.example.com
5 HTTPS_PROXY: http://proxy.example.com

2. docker-compose run 時に -e として環境変数を渡す。

$ docker-compose run -e HTTP_PROXY=$HTTP_PROXY -e HTTPS_PROXY=$HTTPS_PROXY golang bash

3. env_file として環境変数の書かれたファイルを指定する。

docker-compose.yml
1golang:
2 image: golang:1.8
3 env_file: .env
.env
1HTTP_PROXY=$HTTP_PROXY
2HTTPS_PROXY=$HTTPS_PROXY

比較

1 の方法だと、コマンド実行時に PROXY 情報を入力する必要がありませんが、コード上に PROXY 情報が含まれてしまいます。 例えば OSS の docker-compose を実行する場合や、複数社で共有するリポジトリの場合、また単純にリポジトリに環境情報を含めたくない場合は使えません。

2 の方法だと、内部で必要とされる環境変数が増えるほどコマンドが長くなります。(ALL_PROXY や NO_PROXY が必要とされる場面など) しかし、Makefile 等にコマンドを設定することで対処はできます。(利用者が環境変数に設定している前提にはなりますが)

3 の方法だと、リポジトリに含めず.env のみ配布すれば設定できます。

結論

3 が便利

参考

Other Works
2024-12-01 Sun.
OpenAPI Spec を出力できる DSL、TypeSpec の実践例
- ドワンゴ教育サービス開発者ブログ

2024-11-16 Sat.
型付き API リクエストを実現するいくつかの手法とその選択
- TSKaigi Kansai 2024

2024-09-10 Tue.
corepack が標準同梱じゃなくなる未来、 mise でパッケージマネージャを管理する
- Zenn

2024-09-10 Tue.
言語環境の管理は *env や *vm を超えて、 mise へ
- Zenn

2024-06-28 Fri.
TypeSpec を使い倒してる
- Kyoto.js 22

2024-05-11 Sat.
Powerfully Typed TypeScript
- TSKaigi 2024

2024-05-10 Fri.
pnpm の node_modules を探検して理解しよう
- ドワンゴ教育サービス開発者ブログ

2024-03-17 Sun.
neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する
- Zenn

2023-12-20 Wed.
レガシーブラウザ向けのビルドオプションを剪定する
- ドワンゴ教育サービス開発者ブログ

2023-05-26 Fri.
Next.js で dynamic import を使い Client だけで動かす Component を実現する
- Zenn

2023-05-02 Tue.
Node.js でファイル名から拡張子を取り除く/取り出すために path.parse を使う
- Zenn

2023-02-27 Mon.
WSL2 で外部からアクセス可能にするために bridge mode を有効にする
- Zenn

2023-01-26 Thu.
init.vim & dein から init.lua & lazy.nvim へ、シンプル設定で移行した
- Zenn

2023-01-13 Fri.
kindle の本をブクログ形式の csv でエクスポートする@2023初春
- Zenn

2023-01-10 Tue.
自宅サーバの移設に際して docker から nerdctl に移行した
- Zenn

2023-01-10 Tue.
自宅サーバを rootless に移行した際のトラブル対応
- Zenn

2021-11-11 Thu.
並列実行した Promise で throw されても全てハンドルしたいときの方法(allSettled, finally, etc...)
- Zenn