dockerとproxy

閲覧数: 71(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閑話, 公開タグ, ,
閃きは大事だw

このサイトは、あくまでもCMSであるWordPressの構築やクラウドであるAWSの運用ノウハウ取得  続きを読む

緊急事態宣言で外出自粛になり...
blank

せっかくのゴールデンウィークなのに、2年連続で緊急事態宣言下となり、外出自粛中。暇なので小ネタで遊ぶ  続きを読む

ElasticPress 3.5.6
blank

マイナーバージョンアップにも関わらず、検索スコアリングのパラメータが微調整された結果、期待する検索結  続きを読む

タイトルを抜粋する
blank

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

閲覧数まとめ
blank

閃きついでに総合計と週合計をフラグで制御する方式に変更してみた。これまではベタに関数をまるまるコピー  続きを読む

ページナビのテキスト
blank

記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけて  続きを読む

スポンサーリンク

コメントを残す

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