自動化の敵、認証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 linux に squid をインストールして多段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 "xxx@yyy.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" ]