前の記事では、Dockerとは何か、いくつかのコマンドで起きて実行する方法について説明しました。ただし、まだ役に立つことはまだありません。 Dockerを使用してWordPress環境を取得するには多くの方法があります。この記事では、WordPressを使用するようにDockerコンテナを手動でセットアップする方法を紹介します。 Dockerに簡単に紹介したい場合は、ここで最初の記事に戻ることができます。
キーテイクアウト地元の画像のコピーがまだない場合、DockerはDockerハブからそれを引っ張ります。私たちはこれまでのところ、-Nameがコンテナに名前を付けることを知っています。
Docker PSを実行すると、WordPressDBコンテナが実行されていないことがわかります。しかし、それは実行されているはずです。 dockerログを実行すると、WordPressDBが表示されると、次のようなメッセージが表示されます。
docker run --name wordpressdb -d mysql:5.7
それでは、もう一度コンテナを作成しましょう。最初にコンテナを作成するときは、環境変数を渡す必要があります。次のように見えるはずです:
-e mysql_root_password =パスワードは環境変数です。コンテナが画像から構築されている場合、この変数を読み取り、ルートユーザーのパスワードを指定された値に設定します。この場合はパスワードです。
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
他の環境変数をコンテナに渡すこともできます。MySQLイメージのドキュメントに完全なリストを見つけることができます。別の例を次に示します:
以前のコンテナをwordpressdbという名前で削除しようとした場合、おそらく失敗しました。それは、コンテナがまだ背景に動作していたからです。最初に実行中のコンテナを停止してから削除するか、単に削除することができます:
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
このコンテナの構築方法をもっと知りたい場合は、DockerFileを見てください。 Debian Wheezyを使用し、Bashコマンドを使用してコンテナを構築します。リポジトリから引き出してから、MySQLDを起動します。この画像からコンテナを構築する場合、ビルドファイルのコマンドを初めて実行します。コンテナを使用する場合、それはmysqldを実行するだけです
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
WordPressコンテナの構築
このコンテナでは、PHP画像を使用します。 PHP画像には3つのタイプがあり、Apacheに付属するPHP画像のみが必要です。
-dオプションなしでは、バックグラウンドで実行されることはありません。代わりに、コンテナが出力しているすべてのものを表示します(dockerログ[container_name]が実行するのと同じ)。 出力から、IPをそのコンテナに自動的に割り当てたことがわかります。私の場合、172.17.0.35です。ブラウザを使用してこのアドレスにアクセスすると、禁止されたエラーが発生します。何故ですか? /var/www/htmlフォルダー(コンテナファイルシステム上)には何もないためです。
2つのフォルダーのマッピングには
デフォルトでは、PHPイメージにはMySQL拡張機能がインストールされていませんが、それを修正できます。今回は、dockerfileを介してコンテナを構築します。 Dockerfilesの仕組みをすでに見てきました。それらはベース画像から構築され、いくつかの処理を行い、最後に1つのコマンドを実行します。
その後、mysqli拡張子をインストールします。
-tはリポジトリ名を指定するために使用されます。 。 DockerfileがどこにあるかをDockerに伝えます。 Dockerfileはワーキングディレクトリにあるため、。 Dockerに、作業ディレクトリにあることを伝えます Docker画像で画像を確認すると、最新のタグが付いた新しい画像が表示されます(この画像のタグを指定しなかったため)。ここで、このコンテナをこのコンテナを構築します。この画像は、php5.6-apache画像で行ったように。
では、WordPressをデータベースにリンクするにはどうすればよいですか?まず、WordPressコンテナをデータベースコンテナ(WordPressDB)にリンクする必要があります。これは、2つのコンテナをリンクすることで実行できます。リンクの詳細については、こちらをご覧ください。
上記の手順の一部は、非常に不可解で複雑に見えるかもしれません。そのため、さまざまなフレームワークや言語に公式画像があります。すべてのフレームワークまたは言語には、それらがどのように機能するかについて異なる仕様があります。デフォルトでは、Dockerはアプリケーションをファイルシステムに書き込むことを許可していません。これは悪いことですか、それとも良いことですか?良いことだと思います。ファイルのみを保持する3番目のコンテナを作成できます。そこでアプリケーションはファイルを書き込むことができます。このようにして、よりモジュール式アーキテクチャがあります。しかし、(WordPressのように)変更できないフレームワークの場合、回避策があります。
この記事では、WordPress用のコンテナを構築する方法について説明しました。私たちはかなり不可解な方法でそれを行いましたが、覚えにくい長いコマンドでそれを行いました。より簡単な方法があるはずです、そしてあります! Dockerチームは、数分で簡単にセットアップできるWordPressイメージを構築しました。結局のところ、WordPressをセットアップするためにすべてのコマンドを覚えたいのは誰ですか?
このシリーズの次の記事では、公式のWordPress画像の使用方法を示します。DockerComposeを使用して物事をさらに簡単にする方法も学びます。
Dockerコンテナの複数のWordPressサイトを管理するには、Docker Composeを使用して各サイトを別のサービスとして定義できます。 Dockerネットワークを使用して、各サイトのネットワークトラフィックを分離することもできます。 nginxのようなリバースプロキシを使用している場合、ドメイン名に基づいて適切なコンテナにトラフィックをルーティングするように構成できます。
docker run --name wordpressdb -d mysql:5.7
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
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
docker run --name wordpressdb -d mysql:5.7
ここまで行ったら、すべてを正しく行いました。次に、WordPressをデータベースにリンクする必要があります。これは、WordPressの有名な5分間のインストールとはほど遠いものですが、長期的にはDockerの利点を確認できます。
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
entrypoint.shファイルをまだ作成していませんが、まもなくこれを行います。コピーをコピーintorepoint.shがコンテナの内側に /内部にコピーします。 Chmod 777 /entrypoint.shは、そのファイルを実行可能にします。そして最後に、EntryPointはそのファイルを実行します。次に、dockerfileと同じディレクトリにEntryPoint.shファイルを作成します。
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
docker rm -f wordpressdb
私たちがしなければならない最後のことは、WordPressコンテナを停止し、再度開始するときに発生する問題を回避することです。問題は、WordPressが最後のIPを「ホーム」および「サイト」URLとして保存することです。 WordPressコンテナを停止して、もう一度起動します。今回は新しいIPがあります。ブラウザでそれを試すと、画像、CSS、JavaScriptファイルが適切に含まれていないことがわかります。ソリューションはシンプルで、この行を追加してWP-Config.phpを変更するだけです。
docker run --name wordpressdb -d mysql:5.7
これまでの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サイトを管理するにはどうすればよいですか?
以上がWordPress用のDockerコンテナを手動で構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。