DockerでLNMPアーキテクチャを展開する方法

DockerでLNMPアーキテクチャを展開する方法

環境要件:

IPホスト名
192.168.1.1ノード1

プロジェクト計画:

コンテナネットワークセグメント: 172.16.10.0/24

172.16.10.10 のネットワーク

MySQL: 172.16.10.20

172.16.10.20 のアドレス

ウェブサイトのルートディレクトリ:/www

Nginx 設定ファイル: /conf

mysql 永続ディレクトリ: /var/lib/mysql

事前にサービス構成ファイルを準備します。

nginx

docker run -itd --name テスト nginx       
#テストコンテナを実行する docker cp test:/etc/nginx /conf 
     #メイン設定ファイルをコピーする ls /conf/
conf.d koi-win nginx.conf win-utf
fastcgi_params mime.types scgi_params
koi-utf モジュール uwsgi_params
docker cp テスト:/usr/share/nginx/html /www  
 #ウェブサイトのディレクトリをコピー ls /www/
50x.html 
インデックス.html     
</strong>

マイスク

[root@node1 ~]# docker rm -f テスト
テスト
[root@node1 ~]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.7
6b8d73ecd541d454f121302963a85d53131286d3118a968525a24ad2315b047b
[root@node1 ~]# docker exec -it test sh
# mysql -uroot -ppwd123 -h127.0.0.1
..........
mysql> データベーステストを作成します。
クエリは正常、1 行が影響を受けました (0.00 秒)
 
mysql> データベースを表示します。
+--------------------+
| データベース |
+--------------------+
| 情報スキーマ |
|mysql |
| パフォーマンススキーマ |
|システム|
| テスト |
+--------------------+
セット内の行数は 5 です (0.00 秒)
 
mysql>終了
さよなら
# 出口
[root@node1 ~]# docker cp test:/var/lib/mysql /var/lib/mysql
</strong>

1. lnmp 仮想ネットワーク カード、ネットワーク セグメント 172.16.10.0/24、ゲートウェイ 172.16.10.254 を設定します。

docker ネットワーク作成 -d ブリッジ --subnet 172.16.10.0/24 --gateway 172.16.10.254 lnmp
</strong>

2. アクセスをテストするためのnginxコンテナを作成する

#mysql マウントデータディレクトリ、開発ポートを作成し、IP を指定します
[root@node1 ~]# docker run -itd --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql --network lnmp --ip 172.16.10.20 mysql:5.7
448227483a9c3141c2155d2c7b027aec263bfcfe4ebc49371b6817c17565ff81
#実行状態を確認する [root@node1 ~]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
448227483a9c mysql:5.7 "docker-entrypoint.s..." 10 秒前 9 秒前に起動 0.0.0.0:3306->3306/tcp、33060/tcp mysql
4d1e99a06972 nginx:latest "/docker-entrypoint.…" 3 分前 3 分前にアップ 0.0.0.0:80->80/tcp nginx
6b8d73ecd541 mysql:5.7 "docker-entrypoint.s..." 9 分前 9 分前に起動 3306/tcp、33060/tcp テスト
#ログインテスト [root@node1 ~]# yum -y install mariadb
[root@node1 ~]# mysql -uroot -ppwd123 -h127.0.0.1
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは2です
サーバーバージョン: 5.7.33 MySQL コミュニティサーバー (GPL)
 
Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。
 
ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。
 
MySQL [(なし)]> さようなら
</strong>

3. MySQLコンテナを実行する

[root@node1 www]# docker run -itd --name php-fpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php:7.2-fpm 
ae09213d7c8c84299b1522ca474fccf7f26e27973cd02563891c37d51799b766
[root@node1 www]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
ae09213d7c8c php:7.2-fpm "docker-php-entrypoi…" 7 秒前 6 秒前にアップ 0.0.0.0:9000->9000/tcp php-fpm

4. php-fpmコンテナを作成する

[root@node1 ~]# vim /conf/conf.d/default.conf
</strong>

5. nginxとPHPの接続

5.1. nginx 静的テストインターフェースを追加する

<strong>[root@node1 ~]# echo Hello LNMP! > /www/index.html
[root@node1 ~]# cat /www/index.html
こんにちは、LNMP!
[root@node1 ~]# カール 192.168.1.1
こんにちは、LNMP!
</strong>

5.2. PHPテストページを追加する

[root@node1 ~]# cd /www
[root@node1 www]# vim test.php
[root@node1 www]# cat test.php
<?php
phpinfo();
?>
[root@node1 www]# docker nginxを再起動します
nginx
[root@node1 www]# pwd
/www
[root@node1 www]# ls
50x.html インデックス.html テスト.php
</strong> 

上記の 2 つのインターフェースにアクセスできるということは、nginx と php 間の接続に問題がないことを示しています。次のステップは、php と mysql 間の接続です。ここでは、phpMyAdmin データベース管理ツールを使用します。

6. PHPコンテナとMySQLコンテナ間の連携をテストする(ツールphpMyadmin)

[root@node1 www]# pwd
/www
[root@node1 www]# phpMyAdmin-4.9.0.1-all-languages.zip を解凍します
[root@node1 www]# mv phpMyAdmin-4.9.0.1-すべての言語phpMyAdmin
[root@node1 www]# rm -rf phpMyAdmin

6.1. nginx設定ファイルの更新

[root@node1 www]# cd /conf/conf.d/
[root@node1 conf.d]# vim default.conf 

内容は以下のとおりです。

場所 /phpmyadmin {
  ルート /usr/share/nginx/html;
  インデックス index.php index.html index.htm;
}
場所 ~ /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 を含めます。
}

テストアクセス:

実際、これは主に PHP イメージが MySQL への接続をサポートしていないためであり、新しいイメージを作成する必要があります。

7. PHPがMySQLと関連付けられていない問題を解決する

[root@node1 /]# cd /file/
[root@node1 ファイル]# ls
Dockerファイル
[root@node1 ファイル]# cat Dockerfile
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-freetypedir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install mysqli pdo pdo_mysql
[root@node1 ファイル]# docker build -t php_mysql .
#phpコンテナを削除 [root@node1 /]# docker rm php-fpm -f
php-fpm
#phpmysqlコンテナを実行 [root@node1 /]# docker run -itd --name phpfpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 phpmysql:latest
c4e943880fd51f947cba64ba0006abd26a923439a3e39a0350ca2561b42b8026
[root@node1 /]# docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
c4e943880fd5 phpmysql:latest "docker-php-entrypoi…" 14 秒前 13 秒前にアップ 0.0.0.0:9000->9000/tcp phpfpm

7.1、phpmysql 設定は mysql アドレスを指します

[root@node1 www]# cd /www/phpmyadmin/
[root@node1 phpmyadmin]# mv config.sample.inc.php config.inc.php
[root@node1 phpmyadmin]# vim config.inc.php
[root@node1 phpmyadmin]# docker phpfpmを再起動します
phpfpm

8. アクセステスト

9. 鉄は熱いうちに打て、dzフォーラムを公開する

dz フォーラム リンク アドレス: http://down.chinaz.com/soft/41403.htm

#アップロード [root@node1 /]# ls
bin Discuz_X3.4_SC_UTF8_20210119.zip
#/www ウェブディレクトリへ移動 mv upload/ /www/dz
chmod 777 /www/dz<br># データベースに dz ライブラリがあることを確認します<br># dz ライブラリの管理者を承認します<br># インストール IP はデータベース IP なので間違えないようにしてください<br> 

これで、LNMP アーキテクチャを Docker にデプロイする方法に関するこの記事は終了です。LNMP アーキテクチャを Docker にデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker で LNMP 環境を素早く構築する方法 (最新)
  • Dockerを使用して分散lnmpイメージを作成する
  • dockerでlnmp環境を構築する方法
  • Dockerを使用して統合サービスlnmp環境を作成する
  • Dockerを使用してLNMP環境を構築する詳細な説明
  • DockerコンテナでLNMPをコンパイルする例

<<:  CSS でフッターの「下部吸収」効果を実現

>>:  Node.js は、異なるリクエストパスに応じて異なるデータを返します。

推薦する

MySQLでSQL文がどのように実行されるかの詳細な説明

概要最近MySQL関連の知識を勉強し始めました。学んだ知識ポイントと自分の理解を元に整理して共有しま...

MySQL 数千万のビッグデータに対するSQLクエリ最適化の知識ポイントのまとめ

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

CentOS の環境変数と設定ファイルの詳細な説明

序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...

ES6 における Object.assign() の使い方の詳細な説明

目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...

divの適応高さは残りの高さを自動的に埋めます

シナリオ 1: HTML: <div class="outer"> ...

JavaScript はモーダルボックスのドラッグ効果を実現します

これはモーダル ボックスのドラッグのケースです。ここで実装する関数は次のとおりです。 1. ポップア...

スクロールバーを非表示にする HTML の簡単な実装

1. 属性付きHTMLタグXML/HTML コードコンテンツをクリップボードにコピー< htm...

js に基づいて大きなファイルのアップロードとブレークポイントの再開を管理する方法

目次序文フロントエンド構造バックエンド構造(ノード+エクスプレス) FormDataに基づくファイル...

Linux の一般的なコマンド chmod を使用して、ファイルの権限 777 と 754 を変更します。

よく使用されるコマンドは次のとおりです。 chmod 777 文件或目錄例: chmod 777 /...

Linux の圧縮および解凍コマンドの紹介

目次一般的な圧縮形式: gz .bz2 .xz .zip一般的に使用されるアーカイブは圧縮を必要とす...

vscodeで保存した後のHTML自動フォーマットの問題を解決する

vsCode のバージョンは最近更新され、現在のバージョン番号は 1.43 です。実際、vsCode...

JS の難しさ 同期と非同期、スコープとクロージャ、プロトタイプとプロトタイプ チェーンの詳細な説明

目次JS スリーマウンテンズ同期 非同期同期と非同期の違い範囲、終了関数スコープチェーンブロックスコ...

Docker構成 Alibaba Cloud Container Serviceの操作

Alibaba Cloud Dockerコンテナサービスの設定Alibaba Cloud Image...

Vueは完全な選択機能を実装しています

この記事の例では、完全な選択機能を実装するためのVueの具体的なコードを参考までに共有しています。具...