LoginSignup
14
14

More than 5 years have passed since last update.

認証ありHTTPプロキシを認証なしでプロキシするDockerfile

Last updated at Posted at 2016-12-30

自動化の敵、認証HTTPプロキシに対して、認証なしの多段プロキシを立てるDockerfileです。

環境

  • Mac OS 10.12.2
  • Docker version 1.12.5, build 7392c3b

toolboxではなく、Mac Native版を使っています。
--build-arg を使うので、docker v1.9以降が必要です。

usage

Dockerfile (後述) を保存します。

vi Dockerfile
... (コピペする)

docker imageをビルドします。--build-arg で親プロキシ (認証あり) を指定します。

docker build -t proxy \
  --build-arg proxy_host={プロキシのIP/URL} \
  --build-arg proxy_port={プロキシのPORT} \
  --build-arg proxy_user={プロキシのユーザーID} \
  --build-arg proxy_pass={プロキシのパスワード} \
  .

container を run します。

docker run -d -p 3128:3128 --name proxy proxy

ちゃんと立ち上がったか確認。

docker ps

CONTAINER ID  IMAGE     COMMAND                  CREATED           STATUS          PORTS                     NAMES
dfe0181fa385  proxy     "/usr/sbin/squid -N -"   3 seconds ago     Up 2 seconds    0.0.0.0:3128->3128/tcp    proxy

あとはブラウザや設定ファイル等に以下の多段プロキシ (dockerホストOS) を指定したらOK。

dockerホストOSのport:3128を開けておいてね

Dockerfile

alpine linuxsquid をインストールして多段Proxy (代わりに認証してくれる) の設定をします。接続先の親Proxy (認証あり) はコンテナビルド時に --build-arg で指定します。Image size は 21MB でした。

#
# Proxy without user/pass.
#
# Usage:
# $ docker build -t proxy --build-arg proxy_host={url or ip} --build-arg proxy_port={port} --build-arg proxy_user={username} --build-arg proxy_pass={password} .
# $ docker run -d -p 3128:3128 --name proxy proxy
#

FROM alpine:latest
MAINTAINER Yusuke Kawatsu "meg.mog.mog1965@gmail.com"

# --build-args
ARG proxy_host
ARG proxy_port
ARG proxy_user
ARG proxy_pass

# Set correct environment variables.
ENV HOME /root
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ENV HTTP_PROXY http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}
ENV HTTPS_PROXY ${HTTP_PROXY}
ENV NO_PROXY 127.0.0.1,localhost

# install utility commands.
RUN apk update && \
    apk add --no-cache squid

# edit squid settings.
RUN sed -i -e 's@^# should be allowed$@# should be allowed\n\
never_direct allow all\n\
cache_peer '${proxy_host}' parent '${proxy_port}' 0 login='${proxy_user}':'${proxy_pass}'\n@g' \
    /etc/squid/squid.conf

# expose ports.
EXPOSE 3128

# entrypoint.
ENTRYPOINT [ "/usr/sbin/squid" ]
CMD [ "-N", "-f", "/etc/squid/squid.conf" ]
14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14