目的
VSCodeのDev Containers機能を利用し、Dockerコンテナ(Java開発環境)を構築する場合、企業内ネットワークにおいては外部にアクセスするためにはプロキシ設定をしおてく必要があるかと思います。
本記事ではなるべくDocker公式に沿って設定する方針としていますが、1つの事例としてご参考になれば幸いです。
プロキシ設定として考慮した点
プロキシ設定は環境固有の内容となるため、なるべく「Dockerfile」、「docker-compose.yml」には設定しないようにしたいと考えました。
関連記事(ご参考)
下記記事の番外編として、プロキシ設定が必要となる環境における1つの事例を記載させて頂きます。
VSCodeで始めるDockerコンテナ上にJava開発環境を構築(①WSL環境準備編)
VSCodeで始めるDockerコンテナ上にJava開発環境を構築(②Dockerコンテナ編)
1. プロキシ設定
1.1. 「.bashrc」ファイル
以下のようなケースで必要になる設定と考えています。
- ディストロ(Ubuntu)上から外部アクセス時(curlコマンドでHTTPリクエストを送信確認する場合等)
export HTTP_PROXY="[http://proxy server]:[port]"
export HTTPS_PROXY="[http://proxy server]:[port]"
export NO_PROXY="localhost,127.0.0.1"
export HTTP_PROXY="http://proxy.sample.co.jp:8080"
「.bashrc」更新後、以下コマンドを実行して設定内容を反映する。
$ source ~/.bashrc
1.2. 「http-proxy.conf」ファイル
以下のようなケースで必要になる設定と考えています。
- Dockerfileをビルドする際、ベースイメージの取得時
[Service]
Environment=[http://proxy server]:[port]
Environment=[http://proxy server]:[port]
Environment=localhost,127.0.0.1
「http-proxy.conf」更新後、以下コマンドを実行して設定内容を反映する。
# システムデーモンをリロードし、新しい設定を反映
$ sudo systemctl daemon-reload
# Dockerデーモンを再起動
$ sudo systemctl restart docker
1.3. 「config.json」ファイル
以下のようなケースで必要になる設定と考えています。
- コンテナ内から外部アクセス時
VSCodeで始めるDockerコンテナ上にJava開発環境を構築(②Dockerコンテナ編)で使用した「sdk version」コマンド実行時など
{
"proxies": {
"default": {
"httpProxy": "http://[proxy server]:[port]",
"httpsProxy": "http://[proxy server]:[port]",
"noProxy": "localhost,127.0.0.1"
}
}
}
おわりに
今回1つの事例として記載させて頂きましたが、使い方に応じてプロキシ設定は別な箇所で設定する事も可能だと思います。
個別の設定ファイルでプロキシ設定するのは分かりにくくなる、というご意見もあるかと思います。
公開範囲が限定的である場合などは、「Dockerfile」や「docker-compose.yml」に直接プロキシ設定を記述してしまった方がシンプル(分かり易い)かもしれません。
利用するシチュエーションに応じて最適な設定方法というのは異なるものだと思いますが、Dockerコンテナ構築ではプロキシ設定は何がどう設定されているのが正解なのか分からず、とても苦しみました。
プロキシ設定で悩まれている方に解決する1つの手段として、少しでもご参考になりましたら非常に嬉しく思います。