dockerとproxy

閲覧数: 92(0)

dockerやdocker-composeをプロキシ環境下で使うのに苦労したので忘れないようにメモしておきます。テスト環境をクライアントPC上のVMで構築した際、社内プロキシがドメイン参加前提のWindowsベースで、回避のためにローカルのプロキシ(ntlmaps)を立てている時、dockerではローカルのプロキシと名前解決の相性が悪くdockerは通るもののdocker-composeがbuildで失敗する(インターネットにアクセス出来ない)ことが続いたので、なんでだろうと調べたところdockerはローカルでは名前解決しない?ことがわかったのでローカルのプロキシをあきらめ、適当なサーバー上にプロキシ(ntlmaps)を立てて対応することに。ntlmapsはNTLM認証迂回のためのプロキシです。

まずはdockerのプロキシ対応から。これは単純。daemon-reloadとrestartを忘れずに。プロキシ経由していることを確認するために適当なイメージをpullしてみると良いと思います。IPアドレスは自身の環境に合わせて要修正です。

[Service]
Environment='http_proxy=http://172.16.2.60:5865'
Environment='https_proxy=http://172.16.2.60:5865'
Environment='no_proxy=192.168.38.131'

WordPress用のPHP-FPM環境を構築」する際に、社内からインターネットに出られないことでエラーになる部分をプロキシで回避するために追加したのは以下の通り。6-7行目が該当部分です。

FROM php:7.3.6-fpm
# Replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
ENV TZ='Asia/Tokyo'

COPY apt.conf /etc/apt/apt.conf
RUN pear config-set http_proxy http://172.16.2.60:5865

コンテナ内にコピーするapt.confの中身は以下の通り。IPアドレスは自身の環境に合わせて要修正です。

Acquire::http::proxy "http://172.16.2.60:5865/";
Acquire::https::proxy "http://172.16.2.60:5865/";

上記の設定があれば、以下のコンテナ構築は成功します。

# make sure apt is up to date
RUN apt-get update --fix-missing
RUN apt-get install -y curl
RUN apt-get install -y build-essential libssl-dev zlib1g-dev libpng-dev libjpeg-dev libfreetype6-dev

RUN apt-get update && apt-get install libmagickwand-dev -y --no-install-recommends \
  && pecl install imagick-3.4.3 \
  && docker-php-ext-enable imagick

RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd

RUN docker-php-ext-install pdo pdo_mysql mysqli bcmath exif

COPY php.ini /usr/local/etc/php/php.ini

WordPressのプロキシ設定はwp-config.phpに以下の設定を追加することで対応しますが、プロキシを経由しないアクセスをきちんと設定していなかったのでローカルにあるElasticsearchサーバーに接続はするもののインデックスが作成出来ないという事象に遭遇してしまいました。お忘れなく。最後の行がバイパス設定でローカルVM上のアドレスを記載しています。Elasticsearchがリモートの時は不要です。IPアドレスは自身の環境に合わせて要修正です。

define('WP_PROXY_HOST', '172.16.2.60');
define('WP_PROXY_PORT', '5865');
define('WP_USEPROXY', 'TRUE');
define('WP_PROXY_BYPASS_HOSTS','192.168.38.131');

1週間ぐらい悩みましたが何とか解決出来ました。コンテナ内からプロキシを使いたいのではなくて、コンテナ構築のために必要なプロキシ設定です。コンテナが恒常的にプロキシを必要とする場合はENV等の環境設定が必要です。

カテゴリー公開, 閑話(IT)タグ, ,
大事件の後始末?

年末と年始に起こしてしまった大事件の後始末がまだだったので、ここで片づけます。事件の顛末は「年末の大  続きを読む

挙動不審なSwiper対策
blank

ここのトップページで「おすすめ記事」をスライダー形式で表示してくれているのが「Swiper」です。こ  続きを読む

パーマリンク設定
blank

これまでは、サイトURLの後ろは単純な投稿IDを表示するだけだったのを、「投稿名」で表示するように設  続きを読む

子テーマ化詳細’18
blank

結局「今回も子テーマ化」してしまったので、それならそれでやりたい事はやっちゃいましょうという事で、ま  続きを読む

6月の検索ワードまとめ
blank

6月の検索ワードのまとめです。 意外なところで「zabbixダウングレード」が複数回検索され、単独の  続きを読む

小ネタひとつまみ
blank

なんかねパソコンでこのサイトを見ると横幅があり過ぎて読みにくいって指摘がありまして、そもそもWind  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください