Traefik

Traefik Docker設定方法:初心者向けステップバイステップガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Traefik Docker 設定 やり方:初心者向けステップバイステップガイド

現時点において、Docker環境でリバースプロキシを構築する際にはTraefikの導入が主流です。アプリケーションのホスティングやHTTPS化に悩む開発者は多いですが、Traefikならラベルによる動的設定やLet's Encrypt自動取得が可能で、初期セットアップが簡単です。本記事ではDocker Composeファイル作成からHTTPS構築までをステップバイステップで解説します。


TraefikとDocker環境構築の基礎知識

Traefikはコンテナ時代に最適化されたリバースプロキシであり、Dockerとの連携で動的ルーティング設定が可能です。Nginxのような静的な設定ファイルに頼らないため、アプリケーションを増やすたびに手動で変更する必要がありません。

Traefikとは?

TraefikはDockerコンテナのラベル情報からルーティング設定を自動生成します。サービス起動時に即時反映される仕組みにより、アプリケーションの追加や変更に迅速に対応できます。公式ドキュメントでは「リバースプロキシの未来」とも述べられています。

Dockerとの連携メリット

項目 通常設定 Traefikによる自動設定
ルーティング定義方法 手動でNginx設定書を編集 サービス起動時にラベル指定だけで反映
HTTPS化手順 証明書ファイルの手動配置が必要 Let's Encryptによる自動取得が可能
環境変更対応 コンテナ増加に伴う設定変更作業増加 1サービスごとにラベルを追加するだけで完結

Docker Composeファイルの作成手順

Docker Composeファイルを正しく記述することで、Traefikとアプリケーションコンテナを同時に起動できます。ネットワーク設定やイメージ指定のミスは初期段階で発見しやすいため、確認項目を明確にしましょう。

事前準備(Dockerインストール確認)

  1. docker --versionでインストール済みか確認
  2. Docker Composeを実行するにはdocker-compose --versionもチェック

注意:Traefik v3以降ではDocker Engine 20.10以上のバージョンが必要です。

基本構造のテンプレート

以下はTraefik + アプリケーションの基本的なdocker-compose.yml例です:

サービス定義のポイント

  • ポート割当:Traefikは80443を必ず開放する必要があるため、外部アクセス用に設定してください。
  • volumesマウント:証明書保存先(./letsencrypt)はプロジェクトディレクトリ内に作成することを推奨します。

動的ルーティング設定の実践方法

Traefikではラベル情報を利用して動的にルーティングを変更できます。サービス起動時に即時反映されるため、運用中の設定変更が簡単です。

ラベルの基本構文

  • rule:ルーティング条件(ホスト/パス)
  • entrypoints:どのポートでアクセスを許可するか
  • tls:HTTPS有効化

ルールの具体例(ホスト/パス)

設定内容 ラベル記述例
example.comへのリクエストをアプリに振り分ける "traefik.http.routers.app.rule=Host(example.com)"
/api以下のパスのみを特定ルーティングする "traefik.http.routers.api.rule=PathPrefix(/api)"

サービス自動検出の仕組み

TraefikはDocker Engineと通信し、traefikというラベルがついたコンテナを自動で検知します。以下の条件を満たすサービスのみルーティング対象になります。

  • traefik.http.routersラベルがある
  • traefik.docker.networkラベルとネットワーク名が一致する

HTTPS自動取得(Let's Encrypt)の流れ

HTTPS化は証明書申請手順を1度設定すれば自動で更新されるため、運用負荷が減ります。以下に主なフローを解説します。

証明書申請に必要な準備

  • ドメイン所有確認:Let's EncryptではACMEプロトコルを使用し、DNSレコードやHTTPリクエストで所有権を検証します。
  • メールアドレス登録:証明書の有効期限やエラー通知に使用されます。

コンフィグファイルの記述例

リロード時の注意点

  • 証明書取得失敗時の対応acme.jsonファイルを手動で削除することでリトライできます。
  • ドメイン変更のタイミング:DNSレコード更新後、Traefikコンテナを再起動する必要があります。

ネットワーク構成のベストプラクティス

Traefikとアプリケーションサービスは専用ネットワークで分離し、アクセス制御やセキュリティ強化を図る必要があります。ネットワーク設計ミスが原因で起動失敗するケースが多いです。

Traefik専用ネットワークの作成

  • bridgeドライバを使用することで、コンテナ間通信を確実にできます。
  • 外部から見えるIPアドレスが必要な場合はhostドライバを使いますが、セキュリティリスクが高いため避けてください。

アプリケーションサービスとの接続方法

アプリケーションコンテナとTraefikは同じネットワークに所属する必要があります。以下のような構成で設定してください:

外部アクセス設定

サービス IPアドレス割当方法
Traefikコンテナ ホストOSのIPにバインド(ports:で指定)
アプリケーションコンテナ traefik-netネットワーク内でのみアクセス可能

Traefik v3環境への移行確認

Traefik v3では設定ファイル構造やパラメータが大幅に変更されています。既存のv2環境からv3へ移行する際は、互換性をしっかり確認してください。

v2からv3の主な変更点

項目 v2の記述例 v3の記述例 詳細説明
プロバイダ指定 - --providers.docker --providers.docker 引数形式が変更され、コマンドライン引数の順序が厳密に制約されるようになった。
エントリポイント定義 --entrypoints.web.address=:80 --entrypoints.web.address=:80(一部パラメータ変更あり) v3ではエントリポイントの設定がより柔軟になり、複数のプロトコルをサポートするようになった。

設定ファイルの互換性チェック

  • YAML構文:v3ではversion: '3.8'以上が必須です。
  • コマンドライン引数--providers.dockerなど多くのオプションが変更されています。

官方公式ドキュメント(https://traefik.io/)にはv2とv3の比較表や設定例が公開されており、移行前に手元環境でテストすることを強く推奨します。Dockerについてはhttps://www.docker.com/、Let's Encryptについてはhttps://letsencrypt.org/の公式情報を参照してください。


よくある設定ミスと回避策

ラベルのスペルミス

項目 誤った記述例 正しい記述例
ルーター名の定義 traefik.http.routers.app.rule traefik.http.routers.app.rule(スペースは不要)
エントリポイント指定 entrypoints=websecur entrypoints=websecure

対策:Traefikのコンテナログを確認し、エラー内容からミス箇所を特定してください。docker logs traefikコマンドで取得可能です。

ネットワーク定義の誤り

  • ネットワーク名不一致:Traefikとアプリケーションサービスが同じネットワークに所属していない場合、通信できないことがあります。
  • ネットワークを作成していないdocker network lsで確認し、必要ならdocker network create traefik-netで事前に作成してください。

証明書申請時のタイムアウト

  • DNSレコードの設定待ち時間:Let's Encryptによるドメイン所有確認に時間がかかることがあります。10分程度待ってから再起動してみてください。
  • Firewallのポート開放:80番ポートが外部アクセス可能な状態でないと、証明書取得に失敗します。

まとめ

本記事ではTraefikとDocker環境構築について以下の内容を解説しました:

  1. Traefikとは?Dockerとの連携メリット
  2. Docker Composeファイルの作成手順(事前準備、テンプレート、サービス定義)
  3. 動的ルーティング設定方法(ラベル構文、ルール例、自動検出仕組み)
  4. HTTPS自動取得フローと証明書申請時の注意点
  5. ネットワーク構成のベストプラクティス
  6. v3環境への移行確認と互換性チェック
  7. よくある設定ミスと回避策

Traefikを活用することで、Dockerアプリケーションのホスティングがこれまでにないほど楽になります。 今回紹介した手順で実装し、コメント欄にあなたの設定方法を共有してください。他の読者にとっても参考になるでしょう。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Traefik