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つの主体。
仮想マシン上でのapt-get
仮想マシン上でdocker build時のapt-get
vagrant-proxyを導入しただけでは動かないから覚悟しときやー。