1. 環境整備 各コンテナの IP アドレス:
LNMP を構築する際の注意事項:
2. ケースの実装 (1)カスタムネットワークを作成する [root@docker ~]# docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 lnmp //カスタム ネットワークを作成し、ネットワーク セグメントとゲートウェイを指定します。ネットワーク セグメントが定義されている場合にのみ、このネットワークを使用してコンテナーに固定 IP を割り当てることができます。 (2)nginxコンテナを実行する [root@docker ~]# docker run -itd --name test nginx //コンテナをランダムに実行し、nginxに必要な設定ファイルを生成します[root@docker ~]# mkdir /wwwroot //ウェブサイトアクセス用のホームディレクトリ[root@docker ~]# mkdir /docker //Nginxの設定ファイル//nginxコンテナの関連ディレクトリをマウントするためのディレクトリを作成します[root@docker ~]# docker cp test:/etc/nginx /docker/ // nginx コンテナ内の nginx ホーム ディレクトリをローカルに作成されたディレクトリ [root@docker ~] にコピーします。# ls /docker/ nginx [root@docker ~]# docker cp test:/usr/share/nginx/html /wwwroot/ // nginx コンテナ内の Web ルート ディレクトリをローカルに作成されたディレクトリ [root@docker ~] にコピーします。# ls /wwwroot/ html [root@docker ~]# docker run -itd --name nginx -v /docker/nginx:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html -p 80:80 --network lnmp --ip 172.16.10.10 nginx // 作成した nginx ネットワークに基づいて Nginx コンテナを実行し、その IP アドレスを指定します。 // データの永続性を実現するために、ディレクトリを nginx 構成ファイルと Web ルート ディレクトリにそれぞれマウントするには、「-v」オプションを使用します。 // データの永続性を実現する過程で、nginx コンテナ内でいくつかの基本コマンドが使用できない問題も解決されます。 // nginx 構成ファイルまたはネットワーク ルート ディレクトリを変更する必要がある場合は、ローカルの /data ディレクトリで対応する操作を実行するだけです。 //Nginx コンテナを実行してテストします [root@docker ~]# echo "hello world" > /wwwroot/html/index.html [root@docker ~]# curl 127.0.0.1 こんにちは世界 (3)MySQLコンテナを実行する [root@docker ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123.com -d -p 3306:3306 --network lnmp --ip 172.16.10.20 mysql:5.7 // lnmp ネットワークに基づいて MySQL イメージを実行し、その IP アドレスを指定します。 //MYSQL_ROOT_PASSWORD=123.com" は、指定された MySQL データベースのルート パスワードです。// サードパーティのグラフィカル ツールを使用してデータベースに接続する必要がある場合は、"-p" オプションを追加して、コンテナーのポート 3306 をホスト マシンにマップします。 (4)PHPコンテナを実行する [root@docker ~]# docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php:7.2-fpm //phpfpm というコンテナを実行し、ポートをマップし、対応するディレクトリをマウントして、IP アドレスを指定します //マウントされたディレクトリは、nginx コンテナの設定ファイルを変更する必要があるため、nginx のメイン ディレクトリと同じです [root@docker ~]# cd /wwwroot/html/ [root@docker html]# vim test.php <?php phpinfo(); ?> (5)nginxとphpを接続するためにnginx設定ファイルを変更する [root@docker ~]# vim /docker/nginx/conf.d/default.conf 位置 / { ルート /usr/share/nginx/html; index index.html index.htm index.php; //このセクションを追加: index.php } 場所 ~ \.php$ { root /usr/share/nginx/html; //Web ページのルート ディレクトリの場所を変更します fastcgi_pass 172.16.10.30:9000; //PHP コンテナーの IP アドレスに変更します fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; // $document_root 変数を追加します include fastcgi_params; } [root@docker ~]# docker restart nginx //nginxサービスを再起動します。nginx この時点で、ブラウザに移動して、nginx サービスと php サービスのインターフェースを確認します... (6)PHPコンテナとMySQLの連携をテストする これは、nginx と php 間の接続に問題がないことを示しています。次のステップは、php と mysql 間の接続です。 ここでは、phpMyAdmin データベース管理ツールを使用します。 [root@docker ~]# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip //phpmyadmin ソースコードパッケージをダウンロード[root@docker ~]# unzip phpMyAdmin-4.9.1-all-languages.zip //ソースコードパッケージを解凍[root@docker ~]# mv phpMyAdmin-4.9.1-all-languages /wwwroot/html/phpmyadmin //解凍したディレクトリの名前を変更します[root@docker ~]# vim /docker/nginx/conf.d/default.conf //Nginx メイン構成ファイルを編集location /phpmyadmin { ルート /usr/share/nginx/html; インデックス index.html index.htm index.php ; } 場所 ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) { ルート /usr/share/nginx/html; 172.16.10.30:9000; をパスします。 fastcgi_index インデックス.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_params を含めます。 } [root@docker ~]# docker restart nginx // nginx コンテナを再起動します [root@docker ~]# docker ps | grep nginx nginx コンテナが正常に動作していることを確認します f8442dc794b9 nginx "/docker-entrypoint.…" 約 1 時間前 24 秒前に起動 0.0.0.0:80->80/tcp nginx ブラウザ テストにアクセスします。 エラーが表示された場合は、すべてが正しく実行されたことを意味します。通常、このエラーは、PHP を正常にコンパイルしてインストールするときに、「--with-mysql...」などの関連オプションを追加する必要があるために表示されます。このページを見ると、実行している PHP コンテナがデータベースに関するオプションを追加していないことは明らかです。次に、これらの問題を解決します。 (7)PHPコンテナがMySQLデータベースとの関連付けをサポートしていない問題を解決する 次のように、docker の公式 Web サイトにログインし、「PHP」を検索してクリックして入力します。 Docker公式サイトで回答を見ました。次は、元のPHPイメージをベースにDockerfileを書いて、この機能をサポートする新しいイメージを生成してみます! [root@docker html]# vim Dockerfile #Dockerfileファイルを書き込みます。ファイルの先頭は、公式サイトFROM php:7.2-fpmで提供されているコードです。 apt-get update && apt-get install -y \ を実行します。 libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ //スラッシュを追加&& docker-php-ext-install mysqli pdo pdo_mysql //mysql接続機能をサポートするためにこの行を追加します//記述後、保存して終了します [root@docker html]# docker build -t phpmyadmin . //新しいイメージを生成します。コマンドの末尾の「.」を省略しないでください。 [root@docker html]# docker rm -f phpfpm // 元の PHP コンテナは削除できます [root@docker html]# docker run -itd --name phpfpm -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 phpmysql // 新しく作成した PHP イメージに基づいて新しい PHP コンテナを実行します [root@docker ~]# cd /wwwroot/html/phpmyadmin/ [root@docker phpmyadmin]# mv config.sample.inc.php config.inc.php [root@docker phpmyadmin]# vim config.inc.php //php設定ファイルを記述する $cfg['Servers'][$i]['host'] = '172.16.10.20'; これをmysqlコンテナのIPアドレスに変更する [root@docker phpmyadmin]# docker restart phpfpm //phpを再起動します phpfpm [root@docker phpmyadmin]# docker ps | grep phpfpm // PHP コンテナが正常に動作していることを確認します c9feb2df0603 phpmysql "docker-php-entrypoi…" 11 分前 起動 約 1 分 0.0.0.0:9000->9000/tcp phpfpm これで、Docker コンテナ分離デプロイメント LNMP の実装に関するこの記事は終了です。より関連性の高い Docker 分離デプロイメント LNMP コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL無料インストール版を解凍した後にパスワードが見つからない問題を解決する方法
>>: Vue3ナビゲーションバーコンポーネントのカプセル化実装方法
サブクエリの代わりにJOINを使用するMySQL はバージョン 4.1 以降で SQL サブクエリを...
目次Dockerコンテナのデータ量データボリュームの使用方法1: コマンド-vを使用して直接マウント...
最近、モバイル プロジェクトの開発方法を学ぶために vue を使用し、スクロールには better-...
方法 1: hostnamectl の変更ステップ1 ホスト名を確認するホスト名ステップ2 ホスト名...
MySQL 8.0.12のインストールと設定方法を記録してみんなで共有します。 1. インストール1...
多くのプログラマーは MySQL に精通していると思います。多くの人が count の使い方と、最適...
目次1. デバッグ対象2. WebSocketの機能3. ソケット接続を確立する3.1 部屋の作成方...
目次Tomcat でプロジェクトを展開する 3 つの方法プロジェクトをwebappsディレクトリに直...
目次1. ファイル拡張子を取得する2. コンテンツをクリップボードにコピーする3. スリープ時間は何...
1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...
序文MySQL スロー クエリ ログは、MySQL が提供するログ レコードの一種です。これは、応答...
1 背景最近、ZC706-ARM 開発ボードの Linux システムでコンパイル システム (apt...
MySQL はよく使われるオープンソースのデータベース ソフトウェアですが、初めてのユーザーにはあま...
1. 追加時間()指定した秒数を日付に追加する select addtime(now(),1); -...
画像タグは、Web ページに画像を表示するために使用されます。 HTML/XHTML 画像 <...