【行いたい事】
・docker-composeを用いて、dockerfileのビルドをWindows10のPCで行いたい
・WIndows10のDocker Desktop for Windowsでコンテナを起動させたい
・社内プロキシ(認証有)な環境で行いたい
【事前設定・嵌った時の振り返りポイント】
・Docker Desktop for Windowsのプロキシ設定を確認しておく
多分ビルドの時は直接アクセスするパターンが主ではあるが、コンテナ起動後の問題になるので
・環境変数を確認しておく
http_proxyなど定義されているかどうか、それが想定通りなのかどうか
・Windows10のプロキシ設定
WinHTTPプロキシの設定方法 - maruko2 Note.
・docker-composeを実行する環境のプロキシ設定
上記を全て確認したのに、実行するコンソールの時だけ想定と狂っている事ないか
【対応方法】
●ゲストOS, ゲストOS内pip用
docker-composeを実行する際に引数としてプロキシ情報を渡してあげる
大文字と小文字両方定義しておく方が無難
set USER=hoge set PASS=hogehoge set PROXY=http://%USER%:%PASS%@proxy.example.com:8888 docekr-compose build --build-arg HTTP_PROXY=%PROXY% --build-arg HTTPS_PROXY=%PROXY% --build-arg http_proxy=%PROXY% --build-arg https_proxy=%PROXY%
●ゲストOS内npm用
dockerfileにプロキシを参照する記述を行う
docker-composeで渡された環境変数を利用できるので、それで設定する
registryのデフォルトがhttps~なので、http~にしないと動かない場合がある(串次第?)
RUN npm config set proxy $http_proxy RUN npm config set https-proxy $https_proxy RUN npm config set registry http://registry.npmjs.org/
【その他】
●利用したいnpmパッケージによっては、上記を設定しても動かない場合があるかも
私の場合は、JupyterLabでJavaScriptを利用するためのijavascriptが導入できなかった。
Step 15/21 : RUN npm install -g ijavascript ---> Running in f3dd86b4f755 npm ERR! code 1 npm ERR! path /usr/lib/node_modules/ijavascript/node_modules/zeromq npm ERR! command failed npm ERR! command sh -c node scripts/prebuild-install.js || (node scripts/preinstall.js && node-gyp rebuild) npm ERR! npm ERR! Error: connect ECONNREFUSED 52.192.72.89:443 npm ERR! at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) { npm ERR! errno: -111, npm ERR! code:
それ以外は無事導入できている事や、
他のパッケージで上記エラーをパッケージ側で直している事から多分自力では無理かも。
github.com
ただ自分のせいで無い事が証明できないのでissue登録できない…
●ホスト名が解決できない場合は、docker-composeに定義すれば解決できる
qiita.com
●プロキシの認証ユーザー名やパスワードのところにダブルクオーテーションが無いからエラーとか見かけた。
それを付ければ動くんだという回答と、それで動いた!ありがとう!というやりとりを見かけた。
よって、利用している社内プロキシによってはあり得るのかもしれない。
但し、私の環境では特にそんなことしなくても無事動いた。
【参考リンク】
future-architect.github.io
qiita.com