twemproxyのdockerfile書いた


やったこと

探しても使い勝手悪そうなのばかりなので、新規で書いた
https://github.com/the40san/docker-twemproxy
https://hub.docker.com/r/the40san/twemproxy/

自分なりに丁寧に書いたつもりですが、微妙なところあったら(日本語でもいいので)PRかissue下さい。
一応探したけど、もう既に同じような実装あったらごめん。

使い方

READMEに過不足なく書いたつもりですが、こんな感じで使います。
取り敢えず動きそうなコンフィグをデフォルトで同梱してますが、基本コンフィグは上書きして使います。

1. コンフィグを用意する

twemproxy用のコンフィグを用意します。
名前はなんでも良いですが、ここではnutcracker.ymlとしておきます。

2. twemproxyを焼く

今回作ったイメージをベースに自分のイメージを焼きます。
例は愚直にローカルからCOPYしてますが、multi stage build使えるならそっちが良いと思います。

FROM the40san/twemproxy:latest

COPY nutcracker.yml /nutcracker/etc/
ENV NUTCRACKER_CONF="nutcracker.yml"

NUTCRACKER_CONFを指定すると、そのファイルを起動時にコンフィグとして読むようになります。

3. docker-composeに載せる

twemproxy専用に1台インスタンス立てても良いのだけれど、ELBやらhaproxyやらを間に挟んで冗長化するとスループット落ちるって噂があるので、自分は基本APローカルにtwemproxy立てておいて、そこから直にキャッシュのインスタンスを見るようにするつもりです。

こんな感じ

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.myapp
    depends_on:
      - twemproxy

  twemproxy:
    image: my_twemproxy:latest
    depends_on:
      - redis

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"
    command: 'redis-server --save ""'