WordPressのDocker化:サイトのセットアップとデプロイを簡素化

WordPress環境のセットアップの複雑さに巻き込まれたことがあるのは、あなただけではありません。 WordPressは、全ウェブサイトの40%以上を占めており、世界で最も人気のあるコンテンツ管理システム(CMS)となっています。その汎用性は比類のないものですが、MAMP、WAMP、XAMPP などの従来のローカル開発セットアップでは、不整合や悪名高い「自分のマシンで動作する」問題を引き起こす可能性があります。

プロジェクトが拡大し、チームが成長するにつれて、一貫性があり、スケーラブルで効率的な開発環境の必要性が重要になります。 そこで Docker の出番となり、WordPressサイトの開発とデプロイの方法に革命をもたらしました。 さらにスムーズにするために、TLS証明書を自動的に取得する最新のリバースプロキシである Traefikを統合し、サイトがHTTPS上で安全に実行されるようにします。 Traefik は、 Docker Hub から Docker 公式イメージ として入手できます。

この包括的なガイドでは、実際の例を使用してWordPressサイトをDocker化する方法を示します。 Dockerfile の作成、既存の WordPress インスタンスのコンテナ化 (データの移行を含む)、Traefik の自動 TLS 証明書の設定について詳しく説明します。新しく始める場合でも、既存のサイトを移行する場合でも、このチュートリアルで対応できます。

さっそく見ていきましょう!

WordPressアプリをDocker化する

なぜWordPressサイトをコンテナ化する必要があるのですか?

WordPressサイトをコンテナ化すると、開発ワークフローとサイト全体のパフォーマンスを大幅に向上させることができる多くのメリットがあります。

ページの読み込み速度の向上

Docker コンテナは軽量で効率的です。 アプリケーションとその依存関係をコンテナにパッケージ化することで、オーバーヘッドを削減し、リソースの使用を最適化できます。 これにより、ページの読み込み時間が短縮され、ユーザーエクスペリエンスとSEOランキングが向上します。

効率的なコラボレーションとバージョン管理

Docker では、環境全体がコードとして定義されます。 これにより、すべてのチームメンバーが同じセットアップで作業するようになり、環境関連の不一致がなくなります。 Git のようなバージョン管理システムは、Dockerfile と wordpress-traefik-letsencrypt-compose.yml への変更を追跡できるため、コラボレーションがシームレスになります。

簡単なスケーラビリティ

WordPressサイトを拡張してトラフィックの増加を処理するのは、DockerとTraefikを使用すると簡単になります。 アプリケーションの複数のDockerコンテナをスピンアップでき、TraefikはTLS証明書を自動的に処理しながら、負荷分散とルーティングを管理します。

簡素化された環境設定

開発環境のセットアップは、いくつかの Docker コマンドを実行するのと同じくらい簡単になります。 手動でのインストールや設定はもう必要ありません - アプリケーションが必要とするすべてのものは、Docker設定ファイルで定義されています。

更新とメンテナンスの簡素化

WordPressまたはその依存関係の更新は簡単です。 Docker イメージを更新し、コンテナを再構築すれば、準備完了です。 Traefik は、ルートと証明書が動的に管理されることを保証し、メンテナンスのオーバーヘッドを削減します。

WordPress、Docker、Traefik の使用を開始する

始める前に、DockerとTraefikとは何か、そしてそれらがWordPress開発ワークフローにどのように革命をもたらすかについて簡単に説明しましょう。

  • Docker は、開発者がコンテナでアプリケーションを構築、共有、テスト、実行できるようにすることで、ソフトウェア開発ライフサイクル全体を簡素化するクラウドネイティブ開発プラットフォームです。 開発者のエクスペリエンスを効率化すると同時に、組み込みのセキュリティ、コラボレーション ツール、スケーラブルなソリューションを提供して、チーム全体の生産性を向上させます。
  • Traefik は、マイクロサービス用に設計された最新のリバース プロキシおよびロード バランサーです。 Docker とシームレスに統合され、 Let's Encrypt から TLS 証明書を自動的に取得および更新できます。

これにはどのくらいの時間がかかりますか?

この環境のセットアップには、特にTraefikを自動TLS証明書に統合し、既存のWordPressサイトを移行する場合は、約 45〜60 分かかる場合があります。

ドキュメントのリンク

必要なツール

  • Docker Desktop: 最新バージョンをまだインストールしていない場合は、Docker Desktop をダウンロードしてインストールします。
  • ドメイン名: Traefik が Let's Encrypt から TLS 証明書を取得するために必要です。
  • DNS設定へのアクセス:ドメインをサーバーのIPアドレスにポイントします。
  • コードエディタ:設定ファイルの編集に適したコードエディタです。
  • コマンドラインインターフェイス(CLI):ターミナルまたはコマンドプロンプトへのアクセス。
  • 既存のWordPressデータ:既存のサイトをコンテナ化している場合は、WordPressファイルとMySQLデータベースのバックアップがあることを確認してください。

WordPress Docker Bitnamiイメージとは?

プロセスを簡素化するために、WordPress 用の安全で最適化された環境が事前にパッケージ化されている Docker Hub の Bitnami WordPress イメージ を使用します。 これにより、構成時間が短縮され、最新のセキュリティパッチでセットアップが最新の状態に保たれます。

Bitnami WordPressイメージを使用すると、次の方法でセットアッププロセスが合理化されます。

  • 構成の簡素化: Bitnami イメージには、すぐに使用できる適切な既定値と構成が付属しているため、セットアップに費やす時間が短縮されます。
  • セキュリティの強化: イメージは定期的に更新され、最新のセキュリティパッチが含まれているため、脆弱性が最小限に抑えられます。
  • 一貫性の確保: 標準化された環境を使用すると、「自分のマシンで動作する」という問題を回避し、開発、ステージング、運用全体で一貫性を確保できます。
  • 追加のツールを含める: Bitnami には、多くの場合、バックアップ、復元、およびその他のメンテナンス タスクに役立つツールとスクリプトが含まれています。

Bitnami WordPressイメージを選択することで、テスト済みで最適化された環境を活用でき、構成エラーのリスクを減らし、Webサイトの開発により集中できます。

Bitnami WordPress Dockerイメージの主な機能:

  • 本番環境向けに最適化: パフォーマンスとセキュリティを念頭に置いて構成されています。
  • 定期的な更新:最新のWordPressバージョンと依存関係を含むように維持されます。
  • 使いやすさ: デプロイや、データベースやリバースプロキシなどの他のサービスとの統合が容易になるように設計されています。
  • 包括的なドキュメント: すぐに開始するためのガイドとサポートを提供します。

例でBitnamiを使用する理由:

Docker Compose の設定では、次のように指定しました。

1
WORDPRESS_IMAGE_TAG=bitnami/wordpress:6.3.1

これは、Bitnami WordPress イメージ、バージョン 6を使用していることを示しています。3。1。 Bitnamiイメージは、特にTraefikと統合して自動TLS証明書を取得する場合に、安全で効率的、かつ管理しやすいWordPress環境という当社の目標とよく一致しています。

Bitnami WordPress Dockerイメージを活用することで、WordPressプロジェクトの堅牢で信頼性の高い基盤を選択できます。 このアプローチにより、基盤となるインフラストラクチャを気にすることなく、優れたWebサイトの構築に集中できます。

Traefikを使用して既存のWordPressサイトをDocker化する方法

WordPressサイトのドッカー化について、.envなどの実用的な例を使って見ていきましょう および wordpress-traefik-letsencrypt-compose.yml 構成。 また、既存のデータをDockerコンテナに組み込む方法についても説明します。

ステップ 1: 環境変数の準備

まず、.envを作成します wordpress-traefik-letsencrypt-compose.ymlファイルと同じディレクトリにあるファイル。このファイルには、すべての環境変数が格納されます。

.env ファイル:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Traefik Variables
TRAEFIK_IMAGE_TAG=traefik:2.9
TRAEFIK_LOG_LEVEL=WARN
TRAEFIK_ACME_EMAIL=your-email@example.com
TRAEFIK_HOSTNAME=traefik.yourdomain.com
# Basic Authentication for Traefik Dashboard
# Username: traefikadmin
# Passwords must be encoded using BCrypt https://hostingcanada.org/htpasswd-generator/
TRAEFIK_BASIC_AUTH=traefikadmin:$$2y$$10$$EXAMPLEENCRYPTEDPASSWORD
 
# WordPress Variables
WORDPRESS_MARIADB_IMAGE_TAG=mariadb:11.4
WORDPRESS_IMAGE_TAG=bitnami/wordpress:6.6.2
WORDPRESS_DB_NAME=wordpressdb
WORDPRESS_DB_USER=wordpressdbuser
WORDPRESS_DB_PASSWORD=your-db-password
WORDPRESS_DB_ADMIN_PASSWORD=your-db-admin-password
WORDPRESS_TABLE_PREFIX=wpapp_
WORDPRESS_BLOG_NAME=Your Blog Name
WORDPRESS_ADMIN_NAME=AdminFirstName
WORDPRESS_ADMIN_LASTNAME=AdminLastName
WORDPRESS_ADMIN_USERNAME=admin
WORDPRESS_ADMIN_PASSWORD=your-admin-password
WORDPRESS_ADMIN_EMAIL=admin@yourdomain.com
WORDPRESS_HOSTNAME=wordpress.yourdomain.com
WORDPRESS_SMTP_ADDRESS=smtp.your-email-provider.com
WORDPRESS_SMTP_PORT=587
WORDPRESS_SMTP_USER_NAME=your-smtp-username
WORDPRESS_SMTP_PASSWORD=your-smtp-password

筆記:

  • プレースホルダーの値 ( your-email@example.comyour-db-password)を実際の認証情報に置き換えます。
  • このファイルに機密情報が含まれている場合は、バージョン管理にコミットしないでください。
  • パスワード暗号化ツールを使用して、 TRAEFIK_BASIC_AUTHの暗号化されたパスワードを生成します。 たとえば、 htpasswd ジェネレータを使用できます。

ステップ 2:DockerComposeファイルの作成

サービス、ネットワーク、およびボリュームを定義する wordpress-traefik-letsencrypt-compose.yml ファイルを作成します。 このYAMLファイルは、Dockerを使用してWordPressインストールを構成するために重要です。

wordpress-traefik-letsencrypt-compose.yml.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
networks:
  wordpress-network:
    external: true
  traefik-network:
    external: true
 
volumes:
  mariadb-data:
  wordpress-data:
  traefik-certificates:
 
services:
  mariadb:
    image: ${WORDPRESS_MARIADB_IMAGE_TAG}
    volumes:
      - mariadb-data:/var/lib/mysql
    environment:
      MARIADB_DATABASE: ${WORDPRESS_DB_NAME}
      MARIADB_USER: ${WORDPRESS_DB_USER}
      MARIADB_PASSWORD: ${WORDPRESS_DB_PASSWORD}
      MARIADB_ROOT_PASSWORD: ${WORDPRESS_DB_ADMIN_PASSWORD}
    networks:
      - wordpress-network
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 60s
    restart: unless-stopped
 
  wordpress:
    image: ${WORDPRESS_IMAGE_TAG}
    volumes:
      - wordpress-data:/bitnami/wordpress
    environment:
      WORDPRESS_DATABASE_HOST: mariadb
      WORDPRESS_DATABASE_PORT_NUMBER: 3306
      WORDPRESS_DATABASE_NAME: ${WORDPRESS_DB_NAME}
      WORDPRESS_DATABASE_USER: ${WORDPRESS_DB_USER}
      WORDPRESS_DATABASE_PASSWORD: ${WORDPRESS_DB_PASSWORD}
      WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX}
      WORDPRESS_BLOG_NAME: ${WORDPRESS_BLOG_NAME}
      WORDPRESS_FIRST_NAME: ${WORDPRESS_ADMIN_NAME}
      WORDPRESS_LAST_NAME: ${WORDPRESS_ADMIN_LASTNAME}
      WORDPRESS_USERNAME: ${WORDPRESS_ADMIN_USERNAME}
      WORDPRESS_PASSWORD: ${WORDPRESS_ADMIN_PASSWORD}
      WORDPRESS_EMAIL: ${WORDPRESS_ADMIN_EMAIL}
      WORDPRESS_SMTP_HOST: ${WORDPRESS_SMTP_ADDRESS}
      WORDPRESS_SMTP_PORT: ${WORDPRESS_SMTP_PORT}
      WORDPRESS_SMTP_USER: ${WORDPRESS_SMTP_USER_NAME}
      WORDPRESS_SMTP_PASSWORD: ${WORDPRESS_SMTP_PASSWORD}
    networks:
      - wordpress-network
      - traefik-network
    healthcheck:
      test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/8080' || exit 1
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 90s
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wordpress.rule=Host(`${WORDPRESS_HOSTNAME}`)"
      - "traefik.http.routers.wordpress.service=wordpress"
      - "traefik.http.routers.wordpress.entrypoints=websecure"
      - "traefik.http.services.wordpress.loadbalancer.server.port=8080"
      - "traefik.http.routers.wordpress.tls=true"
      - "traefik.http.routers.wordpress.tls.certresolver=letsencrypt"
      - "traefik.http.services.wordpress.loadbalancer.passhostheader=true"
      - "traefik.http.routers.wordpress.middlewares=compresstraefik"
      - "traefik.http.middlewares.compresstraefik.compress=true"
      - "traefik.docker.network=traefik-network"
    restart: unless-stopped
    depends_on:
      mariadb:
        condition: service_healthy
      traefik:
        condition: service_healthy
 
  traefik:
    image: ${TRAEFIK_IMAGE_TAG}
    command:
      - "--log.level=${TRAEFIK_LOG_LEVEL}"
      - "--accesslog=true"
      - "--api.dashboard=true"
      - "--api.insecure=true"
      - "--ping=true"
      - "--ping.entrypoint=ping"
      - "--entryPoints.ping.address=:8082"
      - "--entryPoints.web.address=:80"
      - "--entryPoints.websecure.address=:443"
      - "--providers.docker=true"
      - "--providers.docker.endpoint=unix:///var/run/docker.sock"
      - "--providers.docker.exposedByDefault=false"
      - "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
      - "--certificatesresolvers.letsencrypt.acme.email=${TRAEFIK_ACME_EMAIL}"
      - "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json"
      - "--metrics.prometheus=true"
      - "--metrics.prometheus.buckets=0.1,0.3,1.2,5.0"
      - "--global.checkNewVersion=true"
      - "--global.sendAnonymousUsage=false"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - traefik-certificates:/etc/traefik/acme
    networks:
      - traefik-network
    ports:
      - "80:80"
      - "443:443"
    healthcheck:
      test: ["CMD", "wget", "http://localhost:8082/ping","--spider"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 5s
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=Host(`${TRAEFIK_HOSTNAME}`)"
      - "traefik.http.routers.dashboard.service=api@internal"
      - "traefik.http.routers.dashboard.entrypoints=websecure"
      - "traefik.http.services.dashboard.loadbalancer.server.port=8080"
      - "traefik.http.routers.dashboard.tls=true"
      - "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
      - "traefik.http.services.dashboard.loadbalancer.passhostheader=true"
      - "traefik.http.routers.dashboard.middlewares=authtraefik"
      - "traefik.http.middlewares.authtraefik.basicauth.users=${TRAEFIK_BASIC_AUTH}"
      - "traefik.http.routers.http-catchall.rule=HostRegexp(`{host:.+}`)"
      - "traefik.http.routers.http-catchall.entrypoints=web"
      - "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
    restart: unless-stopped

筆記:

  • ネットワーク: 外部ネットワーク(wordpress-networktraefik-network)を使用しています。 これらのネットワークは、デプロイする前に作成します。
  • ボリューム: ボリュームは、データの永続性のために定義されます。
  • サービス: mariadbwordpresstraefik の各サービスを必要な構成で定義しました。
  • ヘルスチェック: 依存サービスを開始する前に、サービスが正常であることを確認してください。
  • ラベル: Traefik ルーティング、HTTPS 設定を構成し、基本認証でダッシュボードを有効にします。

ステップ 3:外部ネットワークの作成

Docker Compose 構成をデプロイする前に、 wordpress-traefik-letsencrypt-compose.yml で指定されている外部ネットワークを作成する必要があります。

次のコマンドを実行して、ネットワークを作成します。

1
2
docker network create traefik-network
docker network create wordpress-network

ステップ 4:WordPressサイトをデプロイする

次のコマンドで Docker Compose を使用して WordPress サイトをデプロイします (図 1)。

1
docker compose -f wordpress-traefik-letsencrypt-compose.yml -p website up -d
「docker compose -f wordpress-traefik-letsencrypt-compose.yml -p website up -d」コマンドを実行したスクリーンショット。
図 1: Docker Compose を使用して WordPress サイトをデプロイする。

説明:

  • -f wordpress-traefik-letsencrypt-compose.yml: 使用する Docker Compose ファイルを指定します。
  • -p website: プロジェクト名を website に設定します。
  • up -d: コンテナをデタッチモードでビルド、(再) 作成、および開始します。

ステップ 5: デプロイの確認

すべてのサービスが実行されていることを確認します(図 2)。

1
docker ps
実行中のサービスのスクリーンショットで、Container ID、Image、Command、Created、Status、Ports、Names の列が表示されています。
図 2: サービスが実行されています。

mariadbwordpress、およびtraefikサービスが稼働していることがわかります。

ステップ 6:WordPressサイトとTraefikダッシュボードへのアクセス

WordPressサイト: ブラウザで https://wordpress.yourdomain.com に移動します。 .envで前に設定したユーザー名とパスワードを入力します ファイルを開き、[ ログイン ]ボタンをクリックします。 WordPressサイトがHTTPS経由で実行されており、Traefikによって有効なTLS証明書が自動的に取得されていることがわかります(図 3)。

サイトのヘルスステータス、At A Glance、Quick Draft、およびその他の情報セクションを示すWordPressダッシュボードのスクリーンショット。
図 3: WordPressダッシュボード。

大事な: 暗号化証明書を取得するには、Traefik がインストールされているサーバーの IP アドレスを指す A タイプのレコードを外部 DNS ゾーンに設定する必要があります。 これらのレコードを設定したばかりの場合は、これらの変更がDNSサーバーに完全に広がるまでに数分から 48 時間、場合によってはそれ以上かかる場合があるため、サービスのインストールを開始する前に少し待ってください。

  • Traefikダッシュボード: https://traefik.yourdomain.comでTraefikダッシュボードにアクセスします。 認証を求められます。 .envに記載されているユーザー名とパスワードを使用してください ファイル(図 4)。
エントリポイント、ルーター、サービス、ミドルウェアに関する情報を示す Traefik ダッシュボードのスクリーンショット。
図 4: Traefikダッシュボード。

ステップ 7:既存のWordPressデータを組み込む

既存のWordPressサイトを移行する場合は、既存のファイルとデータベースをDockerコンテナに組み込む必要があります。

ステップ 7。1: WordPressファイルの復元

既存のWordPressファイルを wordpress-data ボリュームにコピーします。

オプション 1: Docker ボリュームマッピングの使用

wordpress-traefik-letsencrypt-compose.ymlを変更して、ローカルのWordPressファイルを直接マッピングします。

1
2
volumes:
  - ./your-wordpress-files:/bitnami/wordpress

オプション 2: 実行中のコンテナにファイルをコピーする

WordPressのバックアップが ./wordpress-backup中であると仮定すると、 走る:

1
docker cp ./wordpress-backup/. wordpress_wordpress_1:/bitnami/wordpress/

ステップ 7。2: データベースのインポート

既存のWordPressデータベースを mysqldump または phpMyAdminを使用してエクスポートします。

例:

1
mysqldump -u your_db_user -p your_db_name > wordpress_db_backup.sql

データベースのバックアップをMariaDBコンテナにコピーします。

1
docker cp wordpress_db_backup.sql wordpress_mariadb_1:/wordpress_db_backup.sql

MariaDBコンテナにアクセスします。

1
docker exec -it wordpress_mariadb_1 bash

データベースをインポートします。

1
mysql -u root -p${WORDPRESS_DB_ADMIN_PASSWORD} ${WORDPRESS_DB_NAME} < wordpress_db_backup.sql

ステップ 7。3: 更新wp-config.php(必要な場合)

環境変数を使用しているため、WordPressは自動的にデータベースに接続する必要があります。 ただし、カスタム構成がある場合は、それらが.envの設定と一致していることを確認してください ファイル。

手記: Bitnami WordPressイメージは、環境変数に基づいて wp-config.php を自動的に管理します。 さらにカスタマイズする必要がある場合は、カスタム Dockerfile を作成できます。

ステップ 8: カスタム Dockerfile の作成 (オプション)

追加のPHP拡張機能のインストールや構成ファイルの変更など、WordPressイメージをさらにカスタマイズする必要がある場合は、プロジェクトディレクトリにDockerfileを作成します。

Dockerfile の例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Use the Bitnami WordPress image as the base
FROM bitnami/wordpress:6.3.1
 
# Install additional PHP extensions if needed
# RUN install_packages php7.4-zip php7.4-mbstring
 
# Copy custom app (if not using volume mapping)
# COPY ./app /bitnami/wordpress/app
 
# Set working directory
WORKDIR /bitnami/wordpress
 
# Expose port 8080
EXPOSE 8080

カスタムイメージをビルドします。

Dockerfile からビルドするように wordpress-traefik-letsencrypt-compose.yml を変更します。

1
2
3
wordpress:
  build: .
  # Rest of the configuration

次に、コンテナを再構築します。

1
docker compose -p wordpress up -d --build

ステップ 9:Docker内でWordPressをカスタマイズする

テーマとプラグインの追加

wordpress-dataボリュームをマッピングしているため、WordPress コンテナ内で行った変更 (プラグインやテーマのインストールなど) は、コンテナの再起動後も保持されます。

  • WordPress管理ダッシュボード経由:WordPress管理インターフェイスを介して通常行うのと同じように、テーマとプラグインをインストールします(図 5)。
Classic Editor、Akismet Anti-spam、Jetpackなどのプラグインの選択肢を示すWordPress管理ダッシュボードのスクリーンショット。
図 5: プラグインの追加。
  • 手動: コンテナにアクセスし、テーマまたはプラグインを直接配置します。

例:

1
2
3
docker exec -it wordpress_wordpress_1 bash
cd /bitnami/wordpress/app/themes
# Add your theme files here

DockerとTraefikを使用したWordPressの管理とスケーリング

WordPressサービスのスケーリング

トラフィックの増加を処理するには、WordPress インスタンスをスケーリングすることをお勧めします。

1
docker compose -p wordpress up -d --scale wordpress=3

Traefik は新しいインスタンスを自動的に検出し、それらの間でトラフィックを負荷分散します。

手記: WordPress の設定がスケーリングをサポートしていることを確認します。 セッション・ストレージを外部化したり、メディアのアップロードに共有ファイル・システムを使用したりすることが必要な場合があります。

サービスの更新

サービスを最新のイメージに更新するには:

最新の画像をプルします。

1
docker compose -p wordpress pull

コンテナを再作成します。

1
docker compose -p wordpress up -d

監視とログ

Docker ログ:
特定のサービスのログを表示します。

1
docker compose -p wordpress logs -f wordpress

Traefikダッシュボード:
Traefik ダッシュボードを使用して、ルーティング、サービス、およびヘルスチェックを監視します。

WordPress Docker設定の最適化

Redis を使用したキャッシングの実装

パフォーマンスを向上させるために、オブジェクトキャッシングにRedisを追加できます。

アップデートwordpress-traefik-letsencrypt-compose.yml:

1
2
3
4
5
6
services:
  redis:
    image: redis:alpine
    networks:
      - wordpress-network
    restart: unless-stopped

Redisを使用するようにWordPressを構成します。

  • Redis Object Cache のような Redis キャッシングプラグインをインストールします。
  • redis サービスに接続するように構成します。

セキュリティのベストプラクティス

  • 安全な環境変数:
    • Docker シークレットまたは環境変数を使用して、機密情報を安全に管理します。
    • 機密データをバージョン管理にコミットしないでください。
  • Docker ソケットへのアクセスを制限します。
    • Docker ソケットは、セキュリティ リスクを最小限に抑えるために読み取り専用 (:ro) でマウントされます。
  • 画像を最新の状態に保つ:
    • Docker イメージを定期的に更新して、セキュリティ パッチと改善を含めます。

Traefikの詳細設定

  • ミドルウェア: レート制限、IP ホワイトリスト、およびその他の要求変換のためのミドルウェアを実装します。
  • モニタリング: PrometheusやGrafanaなどの監視ツールと統合して、高度な洞察を得ることができます。
  • ワイルドカード証明書: 複数のサブドメインがある場合は、ワイルドカード証明書を使用するように Traefik を設定します。

まとめ

Traefikを使用してWordPressサイトをDocker化すると、開発とデプロイのプロセスが簡素化され、一貫性、スケーラビリティ、効率性が実現します。 実際の例を活用し、既存のデータを組み込むことで、堅牢なWordPress環境のセットアップに役立つカスタマイズされたガイドを作成しました。

既存のサイトを管理している場合でも、新しいプロジェクトを開始する場合でも、このセットアップにより、DockerとTraefikが面倒な作業を処理しながら、優れたWebサイトの開発という最善のことに集中できます。

さあ、試してみてください! これらのツールを採用することは、ワークフローを最新化し、進化し続けるテクノロジー環境で一歩を踏み出すための一歩です。

さらに詳しく

スキルをさらに向上させ、セットアップを最適化するには、次のリソースを確認してください。