【Docker】alpineイメージをproxy環境下で使用する場合
alpine linuxイメージをプロキシ環境下で使用する場合、様々な障壁に阻まれてコケることがあります。 以下では、その回避策を列挙していきます。(問題の切り分けができていないので一部おかしいことを言っているかもしれません)
1. プロキシの環境変数への登録
Dockerfile内でプロキシを登録します。
ここでRUN export http_proxy={プロキシ:ポート}
とすると、なぜか環境変数に反映されておらずハマりました。
解決策としては
ENV http_proxy=http://{プロキシのIPアドレス}:{ポート}/
ENV https_proxy=http://{プロキシのIPアドレス}:{ポート}/
とすることで環境変数に反映することができました。
2. レポジトリの追加
プロキシを経由する関係でapkレポジトリからライブラリを引っ張ってこれない場合があります。
これは、デフォルトでapkがインデックスを探しに行くレポジトリURLがhttps://~
となっている場合に起こります。
下記のissueにはdl-cdn.alpinelinux.org does not support TLS at all. (中略) APK repositories should be http onlyとあります。
そのため、/etc/apk/repositories
にプレーンなhttpのURLの記述とする必要があります。
すなわち、
RUN rm /etc/apk/repositories
RUN echo "http://cd-cdn.alpinelinux.org/alpine/v3.13/main" >> /etc/apk/repositories
RUN echo "http://cd-cdn.alpinelinux.org/alpine/v3.13/community" >> /etc/apk/repositories
とし、httpでapkのレポを探しに行きます。