著者:三井 颯剛
SLPでは、Webページの公開などに使用しているサーバーを立て直す計画が進行中です。再建後のサーバーでは、「Traefik(トラフィック) 」というコンテナ環境向けのリバースプロキシソフトウエアを採用する予定です。今回は、Dockerでサーバーコンテナを稼働させて、それに対するアクセスをTraefikで制御する場合を例に、Traefikの利用方法について紹介します。
シェルスクリプトマガジン Vol.84は以下のリンク先でご購入できます。![]()
![]()
図3 「docker-compose.yml」ファイルに記述する設定
services:
reverse-proxy:
image: traefik:latest
restart: always
ports:
- "80:80"
environment:
- TZ=Asia/Tokyo
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command:
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
whoami:
image: traefik/whoami
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=PathPrefix(/whoami)"
- "traefik.http.routers.whoami.entrypoints=web"
図6 ダッシュボードを有効にする場合の「docker-compose.yml」ファイルの記述
services:
reverse-proxy:
image: traefik:latest
restart: always
ports:
- "80:80"
- "8080:8080"
environment:
- TZ=Asia/Tokyo
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command:
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.dashboard.address=:8080"
- "--api.dashboard=true"
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.entrypoints=dashboard"
- "traefik.http.routers.api.rule=Host(localhost)"
- "traefik.http.routers.api.service=api@internal"
whoami:
image: traefik/whoami
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=PathPrefix(/whoami)"
- "traefik.http.routers.whoami.entrypoints=web"
図9 「traefik.yml」ファイルに記述する内容
providers:
docker:
exposedByDefault: false
entryPoints:
web:
address: ":80"
dashboard:
address: ":8080"
api:
dashboard: true
図10 設定を分離した場合の「docker-compose.yml」ファイルの記述例
services:
reverse-proxy:
image: traefik:latest
restart: always
ports:
- "80:80"
- "8080:8080"
environment:
- TZ=Asia/Tokyo
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.yml:/etc/traefik/traefik.yml
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.entrypoints=dashboard"
- "traefik.http.routers.api.rule=Host(localhost)"
- "traefik.http.routers.api.service=api@internal"
whoami:
image: traefik/whoami
labels:
- "traefik.enable=true"
- "traefik.http.routers.whoami.rule=PathPrefix(/whoami)"
- "traefik.http.routers.whoami.entrypoints=web"
- "traefik.http.services.myservice.loadbalancer.server.port=80"