SquidをDocker&docker-composeで立ち上げ


docker-composeでproxyサーバを立ち上げる手順です。作成したDockefileは公開しています。

🎃 Dockerfile

まずはSquidのDockerfileです。

FROM ubuntu:14.04

MAINTAINER morizyun <@zyunnosuke>

ENV SQUID_USERNAME squiddummyuser
ENV SQUID_PASSWORD squiddummypassword
ENV SQUID_LOCALNET 10.0.0.0/8
ENV SQUID_CACHE_PEER ""
#ENV SQUID_NEVER_DIRECT "allow all"

ENV CACHE_MAX_SIZE 100
ENV CACHE_MAX_OBJECT_SIZE 4
ENV CACHE_MAX_MEM 256

RUN apt-get update && \
apt-get install -y squid3 apache2-utils m4 && \
mv /etc/squid3/squid.conf /etc/squid3/squid.conf.dist && \
apt-get clean

ADD squid.conf.m4 /etc/squid3/squid.conf.m4
ADD start /start

EXPOSE 3128

VOLUME ["/var/spool/squid3"]

ENTRYPOINT ["/start"]

🐝 startコマンド

続いてSquidを立ち上げるためのコマンドです。

#!/bin/bash -ue

# Write the configuration
m4 -DCACHE_MAX_SIZE="{{${CACHE_MAX_SIZE:-100}}}" \
-DCACHE_MAX_OBJECT_SIZE="{{${CACHE_MAX_OBJECT_SIZE:-4}}}" \
-DCACHE_MAX_MEM="{{${CACHE_MAX_MEM:-256}}}" \
-DSQUID_LOCALNET="{{${SQUID_LOCALNET:-127.0.0.1/32}}}" \
-DSQUID_CACHE_PEER="{{${SQUID_CACHE_PEER:-}}}" \
-DSQUID_NEVER_DIRECT="{{${SQUID_NEVER_DIRECT:-}}}" \
/etc/squid3/squid.conf.m4 > /etc/squid3/squid.conf

# acssions on the log dir
sudo -u proxy -H mkdir -p /var/log/squid3
chmod -R 755 /var/log/squid3
chown -R proxy:proxy /var/log/squid3

# fix permissions on the cache dir
sudo -u proxy -H mkdir -p /var/spool/squid3
chown -R proxy:proxy /var/spool/squid3

# initialize the cache_dir
if [ ! -d /var/spool/squid3/00 ]; then
/usr/sbin/squid3 -N -f /etc/squid3/squid.conf -z
fi

if [ -n "${SQUID_USERNAME:-}" ] && [ -n "${SQUID_PASSWORD:-}" ]; then
htpasswd -bc /etc/squid3/passwd "${SQUID_USERNAME}" "${SQUID_PASSWORD}"
fi

# -X verbose debug logging
# -N Don't run in daemon mode - important for docker

exec /usr/sbin/squid3 -N -X -Y -C -f /etc/squid3/squid.conf $@

😎 docker-compose.yml

docker-compose.ymlです。こちらを作成後、docker-compose upとするとSquidサーバが立ち上がります。

version: '2'
services:
Squid:
image: morizyun/squid-docker
environment:
SQUID_PASSWORD: squiddummypassword
SQUID_USERNAME: squiddummyuser
volumes:
- /srv/docker/squid/cache:/var/spool/squid3
ports:
- 3128:3128/tcp
labels:
io.rancher.container.pull_image: always

🐰 補足:Squidのキャッシュを無効にする

Squidのキャッシュやログの保持を無効にする場合はsquid.confに次の内容を追記します。

# No Cache
acl NOCACHE src all
cache deny NOCACHE
cache_dir null /dev/null

# No Log
cache_access_log /dev/null
cache_store_log none
cache_log /dev/null

🗻 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍