ホームページ > CMS チュートリアル > &#&プレス > WordPress用のDockerコンテナを手動で構築する方法

WordPress用のDockerコンテナを手動で構築する方法

Lisa Kudrow
リリース: 2025-02-17 13:03:10
オリジナル
989 人が閲覧しました

WordPress用のDockerコンテナを手動で構築する方法

前の記事では、Dockerとは何か、いくつかのコマンドで起きて実行する方法について説明しました。ただし、まだ役に立つことはまだありません。 Dockerを使用してWordPress環境を取得するには多くの方法があります。この記事では、WordPressを使用するようにDockerコンテナを手動でセットアップする方法を紹介します。 Dockerに簡単に紹介したい場合は、ここで最初の記事に戻ることができます。

キーテイクアウト

    Dockerは、MySQLとWordPress用のコンテナを作成することにより、WordPressを使用するように手動でセットアップできます。 MySQLコンテナは、Docker HubのMySQL画像を使用して作成され、WordPressコンテナはPHP画像から構築されています。
  • MySQLコンテナでは、最初に作成されたときに環境変数を渡す必要があり、ルートユーザーのパスワードを設定します。追加の環境変数は、mysql_databaseなどのコンテナに渡すこともできます。これにより、その名前が作成されたデータベースが作成されます。
  • WordPressコンテナのPHP画像には、デフォルトでMySQL拡張機能がインストールされていません。これは、PHP:5.6-apache画像を使用し、mysqli拡張機能をインストールし、apache2-foregroundを実行するDockerFileを介してコンテナを構築することで修正できます。
  • WordPressコンテナは、データベースが機能するためにMySQLコンテナにリンクする必要があります。これは、WordPressコンテナを実行するときに-Link引数を使用して行われ、MySQLコンテナの名前を最初の部分として、エイリアスは2番目の部分としてエイリアスを使用します。
  • ファイル許可と、再起動するたびにWordPressコンテナのIPアドレスが変更される問題が発生する可能性があります。これらは、dockerfileを変更して、コンテナのファイルシステムへの書き込みアクセスを保証するentrypoint.shファイルを含めることと、「ホーム」と「サイト」URLをサーバーのように定義するWP-config.phpファイルに行を追加することによってアドレス指定できます。 IPアドレス。
  • mysql
  • のセットアップ
  • すべてのWordPressインストールにはMySQLデータベースが必要です。これを行うには、Docker Hubに向かい、MySQL画像を見つけます。
  • Dockerチームには、使用できるMySQLイメージが既にあります。端末でコマンドを実行する前に、この画像のドキュメントを必ずお読みください。執筆時点の最新バージョンは5.7です。ただし、最新のタグ名は5.6です。画像の最新バージョンは、以前のバージョンでは安定した状態にあります。
この画像を使用してコンテナをセットアップする基本コマンドは次のとおりです。

地元の画像のコピーがまだない場合、DockerはDockerハブからそれを引っ張ります。私たちはこれまでのところ、-Nameがコンテナに名前を付けることを知っています。

Docker PSを実行すると、WordPressDBコンテナが実行されていないことがわかります。しかし、それは実行されているはずです。 dockerログを実行すると、WordPressDBが表示されると、次のようなメッセージが表示されます。

docker run --name wordpressdb -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
なぜそれがあるのですか?最初にコンテナを構築したときに、引数としてルートパスワードを渡さなかったからです。それで、まさにそれをしましょう。まず、Docker RM WordPressDBを使用してWordPressDBという名前で作成したコンテナを削除する必要があります。これは、新しいコンテナが同じ名前を使用し、同じ名前の2つのコンテナができないためです。

それでは、もう一度コンテナを作成しましょう。最初にコンテナを作成するときは、環境変数を渡す必要があります。次のように見えるはずです:

-e mysql_root_password =パスワードは環境変数です。コンテナが画像から構築されている場合、この変数を読み取り、ルートユーザーのパスワードを指定された値に設定します。この場合はパスワードです。
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
DockerログをWordPressDBをチェックすると、非常に長いメッセージが表示されますが、これについて心配する必要はありません。動作しています。繰り返しますが、Docker PSを実行すると、アクティブで実行されているWordPressDBという名前のコンテナが表示されます。

他の環境変数をコンテナに渡すこともできます。MySQLイメージのドキュメントに完全なリストを見つけることができます。別の例を次に示します:

以前のコンテナをwordpressdbという名前で削除しようとした場合、おそらく失敗しました。それは、コンテナがまだ背景に動作していたからです。最初に実行中のコンテナを停止してから削除するか、単に削除することができます:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
mysql_databaseを使用すると、その名前のデータベースが作成されていることを確認します。このようにして、データベースとルーツのパスワードの名前が何であるかを確実に知っています。パスワードとデータベースを備えた別のユーザーを作成することもできます。これがあなたのための簡単なテストです。彼らのドキュメントを見て、これを自分でやろうとしています。

このコンテナの構築方法をもっと知りたい場合は、DockerFileを見てください。 Debian Wheezyを使用し、Bashコマンドを使用してコンテナを構築します。リポジトリから引き出してから、MySQLDを起動します。この画像からコンテナを構築する場合、ビルドファイルのコマンドを初めて実行します。コンテナを使用する場合、それはmysqldを実行するだけです

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
実行中のmysqlコンテナができたので、WordPressを実行するコンテナを実行できます。

WordPressコンテナの構築

このコンテナでは、PHP画像を使用します。 PHP画像には3つのタイプがあり、Apacheに付属するPHP画像のみが必要です。

-dオプションなしでは、バックグラウンドで実行されることはありません。代わりに、コンテナが出力しているすべてのものを表示します(dockerログ[container_name]が実行するのと同じ)。

出力から、IPをそのコンテナに自動的に割り当てたことがわかります。私の場合、172.17.0.35です。ブラウザを使用してこのアドレスにアクセスすると、禁止されたエラーが発生します。何故ですか? /var/www/htmlフォルダー(コンテナファイルシステム上)には何もないためです。

では、そのフォルダーにファイルをどのように配置できますか?デフォルトでは、そのフォルダーはコンテナ内にとどまり、目に見えません。ただし、長くはありません(RM WordPressをDockerすることを忘れないでください)。まず、フォルダーを作成してその内部をナビゲートします(古いWordPressコンテナを削除することを忘れないでください)。

2つのフォルダーのマッピングには

-Vが使用されます。最初の部分はOSのフォルダーで、2つ目はコンテナファイルシステムのフォルダーです。 UNIXのようなシステムでは、「$ PWD」は、コマンドが実行されるときの場所を返します。ターミナルを最初に開始すると、ホームディレクトリになります。 Windowsの同等のものはCDです。PWDについてはここで見つけることができます。
docker run --name wordpressdb -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
私たちの例では、最初の部分は「$ PWD/」です。これはローカルディレクトリであり、2番目の部分は/var/www/html/です。 -vは、両方がフルパスである必要があります。ただし、ワーキングディレクトリを見ると、ファイルが存在しないことがわかります。以下を含むindex.phpというファイルを作成します

これをブラウザでもう一度確認してください。今回は、新しいコンテナを作成したため、IPアドレスが変更されたことに気付くでしょう。新しいコンテナを作成するたびに、IPを変更します。ブラウザにそのメッセージが表示されたら、すべてを正しく行いました。

WordPressファイルをそこに配置した場合に何が起こるか見てみましょう。 Docker Stop WordPressを使用して、コンテナを停止します。 WordPress.orgからWordPressの最新のコピーをつかみ、プロジェクトフォルダー内にファイルをドロップします。 Docker Start WordPressを使用して、もう一度コンテナを起動します。また、最初にファイルを読み取り可能にする必要があることに注意してください。 *nixシステムでCHMOD -R 777 ProjectFolderを実行できます。ページをリロードすると、ブラウザは次のように表示されます。
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

デフォルトでは、PHPイメージにはMySQL拡張機能がインストールされていませんが、それを修正できます。今回は、dockerfileを介してコンテナを構築します。 Dockerfilesの仕組みをすでに見てきました。それらはベース画像から構築され、いくつかの処理を行い、最後に1つのコマンドを実行します。

dockerfileという名前の新しいファイルを作成します:

PHP:5.6-Apache画像を使用したい
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

その後、mysqli拡張子をインストールします。

次に、PHPイメージのようにapache2-foregroundを実行する必要があります(結局mysql拡張子をインストールする必要がありました)。

ビルドファイルを使用して、画像をビルドできます。この画像を使用して、コンテナを構築します
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

-tはリポジトリ名を指定するために使用されます。 。 DockerfileがどこにあるかをDockerに伝えます。 Dockerfileはワーキングディレクトリにあるため、。 Dockerに、作業ディレクトリにあることを伝えます

Docker画像で画像を確認すると、最新のタグが付いた新しい画像が表示されます(この画像のタグを指定しなかったため)。ここで、このコンテナをこのコンテナを構築します。この画像は、php5.6-apache画像で行ったように。

docker run --name wordpressdb -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
コンテナIPのブラウザを確認すると、次のようなものが表示されます:

WordPress用のDockerコンテナを手動で構築する方法ここまで行ったら、すべてを正しく行いました。次に、WordPressをデータベースにリンクする必要があります。これは、WordPressの有名な5分間のインストールとはほど遠いものですが、長期的にはDockerの利点を確認できます。

では、WordPressをデータベースにリンクするにはどうすればよいですか?まず、WordPressコンテナをデータベースコンテナ(WordPressDB)にリンクする必要があります。これは、2つのコンテナをリンクすることで実行できます。リンクの詳細については、こちらをご覧ください。

新しい引数は-linkです。最初の部分WordPressDBは、リンクしたいコンテナの名前で、2番目の部分MySQLはエイリアスです。 Dockerは、WordPressコンテナのホストを変更し、WordPressDBのIPをMySQLに設定します。したがって、WordPress構成のデータベースの情報を入力すると、ホストを「mysql」に設定します。
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
コンテナのIP(新しいIP)を使用してブラウザに移動します。データベースの情報を入力し、管理者パネルにログインします。新しいテーマ(ファイルシステムで変更を加えようとする)をインストールしようとすると、次のようなものが表示されます。

なぜそれがあるのですか? Apacheを実行しているユーザーがファイルシステムに書き込みアクセスを持っていないためです。これは、物事が少し難しくなる場所です。 phpwithmysql画像の新しいバージョンを構築する必要があります。 dockerfileに移動して、このように変更してください:

WordPress用のDockerコンテナを手動で構築する方法entrypoint.shファイルをまだ作成していませんが、まもなくこれを行います。コピーをコピーintorepoint.shがコンテナの内側に /内部にコピーします。 Chmod 777 /entrypoint.shは、そのファイルを実行可能にします。そして最後に、EntryPointはそのファイルを実行します。次に、dockerfileと同じディレクトリにEntryPoint.shファイルを作成します。

これは、公式のWordPress画像の単純化された回避策ですが、コンテナファイルシステムへの書き込みアクセスがあることを確認します。これで、新しい画像を作成できます:
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

古い容器を取り外して新しい容器を作成してください。
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

また、古いwp-config.phpファイルを削除します
docker rm -f wordpressdb
ログイン後にコピー
ブラウザのWordPressコンテナのIPを確認します。今回は、テーマとプラグインをインストールし、コンテナファイルシステムで変更を加えることができます。

上記の手順の一部は、非常に不可解で複雑に見えるかもしれません。そのため、さまざまなフレームワークや言語に公式画像があります。すべてのフレームワークまたは言語には、それらがどのように機能するかについて異なる仕様があります。デフォルトでは、Dockerはアプリケーションをファイルシステムに書き込むことを許可していません。これは悪いことですか、それとも良いことですか?良いことだと思います。ファイルのみを保持する3番目のコンテナを作成できます。そこでアプリケーションはファイルを書き込むことができます。このようにして、よりモジュール式アーキテクチャがあります。しかし、(WordPressのように)変更できないフレームワークの場合、回避策があります。

最終調整

私たちがしなければならない最後のことは、WordPressコンテナを停止し、再度開始するときに発生する問題を回避することです。問題は、WordPressが最後のIPを「ホーム」および「サイト」URLとして保存することです。 WordPressコンテナを停止して、もう一度起動します。今回は新しいIPがあります。ブラウザでそれを試すと、画像、CSS、JavaScriptファイルが適切に含まれていないことがわかります。ソリューションはシンプルで、この行を追加してWP-Config.phpを変更するだけです。

これらの値をWP-Config.phpファイルで定義する場合、一般的な設定で後で変更することはできないことに注意してください。
docker run --name wordpressdb -d mysql:5.7
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
結論

この記事では、WordPress用のコンテナを構築する方法について説明しました。私たちはかなり不可解な方法でそれを行いましたが、覚えにくい長いコマンドでそれを行いました。より簡単な方法があるはずです、そしてあります! Dockerチームは、数分で簡単にセットアップできるWordPressイメージを構築しました。結局のところ、WordPressをセットアップするためにすべてのコマンドを覚えたいのは誰ですか? このシリーズの次の記事では、公式のWordPress画像の使用方法を示します。DockerComposeを使用して物事をさらに簡単にする方法も学びます。

では、より簡単な方法があれば、なぜこの記事を書いたのですか?基本的に、Dockerの仕組みをよりよく理解することであり、これを行うには、基礎となる複雑さで手を汚す必要があります。これは個人的なルールなので、明日Dockerを使用できるようになったら、それがどのように機能し、ニーズに合わせてどのように調整するかについて詳しく知ることができます。また、Dockerが舞台裏でどのように機能するかをより深く理解していることを願っています。 DockerとWordPressでさらに楽しくなるこのシリーズの3番目の記事にご期待ください。

これまでのDockerについてどう思いますか?次のプロジェクトでそれを考えますか?以下のコメントでお知らせください。

WordPressのDockerコンテナの構築に関するよくある質問(FAQ) WordPress用のDockerコンテナが安全であることを確認するにはどうすればよいですか?>

WordPress用のDockerコンテナをセットアップする場合、セキュリティは重要な側面です。コンテナが安全であることを確認するには、常にDockerとWordPressの最新バージョンを使用してください。 Docker画像とコンテナを定期的に更新して、最新のセキュリティパッチを含めます。また、Docker Secretsを使用して、パスワードなどの機密データを管理します。容器が侵害された場合、潜在的な損傷を最小限に抑えるために、rootとしてdockerコンテナの実行を避けてください。最後に、Dockerセキュリティスキャンツールを使用して画像の脆弱性を識別および修正します。 WordPress、軽量のベース画像の使用を検討してください。これにより、画像のサイズが縮小され、ビルドプロセスがスピードアップされます。また、Dockerのマルチステージビルドを使用して、ビルドタイムとランタイムの依存関係を分離します。これにより、最終画像のサイズが大幅に削減できます。さらに、コンテナが使用できるリソース(CPU、メモリ)を制限して、ホストマシン上の利用可能なすべてのリソースを消費しないようにします。 🎜> Dockerは、トラブルシューティングのためのいくつかのツールを提供します。 「Dockerログ」コマンドを使用して、実行中のコンテナのログを表示します。コンテナがクラッシュしている場合は、「Docker Inspect」コマンドを使用して、コンテナに関する詳細情報を取得します。 「Docker Stats」コマンドを使用して、コンテナのリソース使用量を監視することもできます。ネットワークの問題に直面している場合は、「Docker Network Inspect」コマンドを使用してDockerネットワークを検査します。 Dockerコンテナで実行されているWordPressサイト「Docker CP」コマンドを使用して、コンテナからホストマシンにファイルをコピーできます。 Dockerボリュームを使用してデータを持続することもできます。 MySQLデータベースを使用している場合は、「mysqldump」コマンドを使用してデータベースのバックアップを作成できます。スケーリングアプリケーション用のいくつかのツールを提供します。 Docker Composeを使用して、マルチコンテナーアプリケーションを定義および実行し、コンテナインスタンスの数を増やすことでそれらをスケーリングできます。 Docker SwarmまたはKubernetesを使用することもできます。これは、複数のホストでコンテナを管理およびスケーリングできるオーケストレーションツールです。 Jenkins、Travis CI、GitHubアクションなどのCI/CDツールを使用して、DockerコンテナでWordPressサイトの展開を自動化できます。これらのツールは、Docker画像を作成し、テストを実行し、コンテナをDockerホストまたはKubernetesクラスターに展開できます。

dockerコンテナ内の複数のWordPressサイトを管理するにはどうすればよいですか?

Dockerコンテナの複数のWordPressサイトを管理するには、Docker Composeを使用して各サイトを別のサービスとして定義できます。 Dockerネットワークを使用して、各サイトのネットワークトラフィックを分離することもできます。 nginxのようなリバースプロキシを使用している場合、ドメイン名に基づいて適切なコンテナにトラフィックをルーティングするように構成できます。

Dockerコンテナで実行されているWordPressサイトを更新するには、Dockerハブから最新のWordPress画像を引いて、実行中のコンテナを停止し、更新された画像を使用して新しいコンテナを起動できます。更新する前にデータをバックアップすることを忘れないでください。

Dockerコンテナで実行されているWordPressサイトを監視するにはどうすればよいですか? 「Docker Stats」コマンドを使用して、コンテナのリソース使用量を監視できます。 PrometheusやGrafanaなどのツールを使用して、コンテナからメトリックを収集および視覚化することもできます。

既存のWordPressサイトをDockerコンテナに移行するにはどうすればよいですか? Dockerコンテナでは、WordPressファイルとデータベースをバックアップし、DockerFileとDocker Composeファイルを作成してWordPressおよびデータベースサービスを定義し、Docker画像を構築し、コンテナを起動する必要があります。 WordPress構成を更新して、新しいデータベースサービスを指すことを忘れないでください。

以上がWordPress用のDockerコンテナを手動で構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート