きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

proxy環境下のhyperlegder/fabricの勘所

とにかく面倒くさい。

日本人であるビハインドの次に、プロキシ通さないといけないビハインド。

 

1つ目

Windows上のvagrantプログラムが最新のboxを探すためのproxy設定。

これはコマンドプロンプトからvagrant upを呼ぶ前提として、Windowsが認識するhttp_proxyやhttps_proxyを環境変数としてsetする。

これ自体はファイルの修正は不要。

 

2つ目

vagrant upした時に、virtual box上の仮想マシン(ubuntu)がapt-getするので、そこにプロキシを通してあげるために、(自分のやり方では)vagrant-proxyが導入されている前提で、VagrantFileにそれ用の記述をしておく。まあ、ファイルを書き換えなくても、プラグインが認識する環境変数を渡す手もある。

あと、後々に変にdockerコンテナ間の通信でプロキシを挟まないようにNO_PROXYも書いておいたほうがいい。

 

3つ目

プロビジョニング中に呼ばれるsetup.shで/etc/default/dockerを上書き(>)しやがるせいでハマるため、setup.shを修正して、/etc/default/dockerに、プロキシ設定をexportする記述を追記(>>)する。

上書きしやがるというのは、vagrant-proxyにおけるdocker用設定は意味ねーって状態になる区間があるという話です。

 

4つ目

仮想マシン上でプロビジョニング中にdocker buildする際に、apt-getがまた動くのだけれど、それに対応するために、docker.shにONBUILD時の環境変数(ENV)としてプロキシ設定を書き加える。

docker.shからdocker build時に呼び出されるcommon.shに書き加える方法もあるが、docker.shで作ってるDockerFileに対して設定を与えるほうがスマートであろうと考えている。

うーむ、/etc/apt配下ファイルをコピー(COPY)する?というやり方もあるのかもしれんが、いまはONBUILD ENVで環境変数を切っている。

 

まとめ

インターネットに繋ぎたがる3つの主体。

Windows上のvagrantプログラム

仮想マシン上でのapt-get

仮想マシン上でdocker build時のapt-get

 

vagrant-proxyを導入しただけでは動かないから覚悟しときやー。