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ナビゲーションバーコンポーネントのカプセル化実装方法
導入Ubuntu のデフォルトのソースは国内サーバーではないため、更新されたソフトウェアのダウンロー...
まず、VMware 14のアクティベーションコードをお渡ししますFF31K-AHZD1-H8ETZ-...
js では、ログインまたは登録を確認する前に、ユーザーが特定の契約書を読むように設定します (使用...
この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共...
この記事では、例を使用して、MySQL ステートメントを使用して、単純な追加、削除、変更、およびクエ...
MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...
1. CentOSイメージをダウンロードする1.1 ダウンロードウェブサイトhttp://mirro...
Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。ステップ1: ディレクトリ構造を作成...
目次1. ページレンダリング2. タグを切り替える3. タグを削除するこのようなタグはどのように記述...
目次1. 内閣府1. コンセプト2. MHAの構成3. MHAの特徴2. MySQL+MHAをビルド...
スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...
たくさんのチュートリアルを読みましたが、うまくインストールできませんでした。しばらく試行錯誤した後、...
この記事では、純粋な CSS3 を使用してモバイル端末での展開と折りたたみの効果を実装するサンプルコ...
ドロップダウン メニューも実生活では非常に一般的です。実装に使用される js コードは、タブ選択やア...
今日、インターフェースの同時実行の問題を検証したところ、これまでredisで解決していた同時実行のプ...