環境準備: 複数のコンテナに基づいてホストに lnmp をデプロイします。 コンテナの IP アドレスが固定される問題を解決します。 注: コンテナが停止または削除され、同じコンテナが再度実行されると、その IP アドレスは元のアドレスではなくなるため、コンテナの IP アドレスを指定するにはネットワーク セグメントをカスタマイズする必要があります。 プロジェクト運営: (1)まずネットワークをカスタマイズします。 [root@sqm-docker01 ~]# docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 mynet1 (2)nginx、php:fpm、mysql-5.7イメージをダウンロードします。 [root@sqm-docker01 ~]# docker pull nginx [root@sqm-docker01 ~]# docker pull php:7.2-fpm <!--php:7.2-fpmのイメージを使用--> [root@sqm-docker01 ~]# docker pull mysql:5.7 <!--mysql:5.7のイメージを使用--> (3)####nginxイメージに基づいてコンテナを実行する##### #まず nginx サービスを実行して nginx 設定ファイルをコピーします。 パラメータの説明:
ファイルをマウントするホスト上にディレクトリを作成します。 ウェブサイトのメインディレクトリ: /wwwroot; nginx 設定ファイル: /docker; [root@sqm-docker01 ~]# mkdir /wwwroot [root@sqm-docker01 ~]# mkdir /docker ##docker cp コマンドを使用して、nginx 構成ファイルが保存されているディレクトリをローカル マシンにコピーします。 注: docker cp コマンドは、ホストからコンテナにファイルをコピーしたり、コンテナ内のファイルまたはディレクトリをローカル マシンにコピーしたりできます。 [root@sqm-docker01 ~]# docker cp test1:/etc/nginx /docker/ #docker cp を使用して、nginx 構成ファイルが保存されているディレクトリをホストにコピーします。 [root@sqm-docker01 ~]# ls /docker/nginx/conf.d/ デフォルト.conf nginx Web ディレクトリをコピーします。 [root@sqm-docker01 ~]# docker cp test1:/usr/share/nginx/html /wwwroot/ [root@sqm-docker01 ~]# ls /wwwroot/html/ 50x.html インデックス.html nginx のデフォルトのテスト Web ページを変更します。 [root@sqm-docker01 html]# echo "<h1>hello welcome to nginx web</h1>" > index.html (4)nginxコンテナを実行します。 コンテナ内のディレクトリをローカルディレクトリにマウントし、IPアドレスを指定します。 [root@sqm-docker01 ~]# docker run -itd --name nginx --network my_net1 --ip 172.16.10.10 -p 80:80 -v /docker/nginx:/etc/nginx -v /wwwroot/html:/usr/share/nginx/html nginx:latest パラメータの説明:
(5)mysqlコンテナを実行します。 [root@sqm-docker01 ~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=123.com -d -p 3306:3306 --network my_net1 --ip 172.16.10.20 mysql:5.7 -eはコンテナ内の環境変数を設定するためのものです。コンテナに渡されてmysqlパスワードを設定するmysqlパスワード環境変数を設定します。 このマシンで root ユーザーが mysql にログインできるかどうかをテストします。 まず、mysql クライアントをダウンロードする必要があります。 [root@sqm-docker01 ~]# yum -y mysqlをインストールします (6)PHPコンテナを実行します。 [root@sqm-docker01 ~]# docker run -itd -p 9000:9000 --name phpfpm -v /wwwroot/html:/usr/share/nginx/html --network my_net1 --ip 172.16.10.30 php:7.2-fpm 知らせ: (7)nginxとphp-fpmを設定します。 nginx を解析するには PHP を設定する必要があります。 簡単なテスト Web ページを作成します。 次に、nginx 構成ファイルを変更する必要があります。 [root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf (8)mysqlを設定する: phpMyadmin の設定: phpMyAdmin は、Web サイト ホスト上の PHP ベース、Web ベースの MySQL データベース管理ツールであり、管理者は Web インターフェイスを使用して MySQL データベースを管理できます。この Web インターフェイスは、特に大量のデータをインポートおよびエクスポートする場合に、複雑な SQL 構文を簡単に入力するためのより優れた方法です。最大の利点の 1 つは、phpMyAdmin が他の PHP プログラムと同様に Web サーバー上で実行されるため、これらのプログラムによって生成された HTML ページをどこからでも使用できることです。つまり、MySQL データベースをリモートで管理し、データベースとテーブルを簡単に作成、変更、削除できます。 [root@sqm-docker01 html]# pwd /wwwroot/html 現在のディレクトリに解凍します: [root@sqm-docker01 html]# phpMyAdmin-4.9.1-all-languages.zip を解凍します 名前を変更: [root@sqm-docker01 html]# mv phpMyAdmin-4.9.1-すべての言語phpmyadmin nginx 設定ファイルを変更します - phpMyAdmin との接続を設定します。 [root@sqm-docker01 html]# vim /docker/nginx/conf.d/default.conf 元の場所構成項目をコピーし、次の 2 つの場所構成セクションを追加します。 nginx 設定ファイルを変更したら、nginx を再起動します。 テスト Web ページにアクセスしてください: コンテナ内のポートはホストにマッピングされているので、ホストアドレス172.16.1.30に直接アクセスします。 PHP にアクセスして nginx Web ページを解析します。 次に、phpMyAdmin へのログインをテストします。 URLにアクセス: http://172.16.1.30/phpmyadmin/index.php mysqli モジュールが欠落しているためアクセスできません。そのため、mysql 構成モジュールをサポートするために php を追加する必要があります。 コンテナに拡張モジュールを追加する方法については、dockerhub にログインして関連ドキュメントを照会できます。 リンクパス: https://hub.docker.com/ 上記の Dockerfile スクリプトをコピーしてローカルにインストールします。 いくつかの追加コンテンツを追加する必要があることに注意してください。 [root@sqm-docker01 ~]# vim 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-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install mysqli pdo pdo_mysql Dockerfile をビルドします。 [root@sqm-docker01 ~]# docker build -t phpfpm-mysqli . パラメータの説明:
ビルドが完了したら、元の PHP イメージを削除し、正常にビルドされて mysqli モジュールをサポートするイメージを実行します。 [root@sqm-docker01 ~]# docker stop phpfpm phpfpm [root@sqm-docker01 ~]# docker rm phpfpm phpfpm [root@sqm-docker01 ~]# docker run --name phpfpm -d -p 9000:9000 -v /wwwroot/html:/usr/share/nginx/html --network my_net1 --ip 172.16.10.30 phpfpm-mysqli:latest #Mirror は、ビルドしたばかりの Dockerfile によって生成されたイメージ名を指定します。 phpMyAdmin のデフォルトのサンプル (サンプル ファイル) を変更します。 設定ファイルで使用する場合は、名前を変更してサンプルを削除する必要があります。 [root@sqm-docker01 phpmyadmin]# パスワード /wwwroot/html/phpmyadmin [root@sqm-docker01 phpmyadmin]# cp config.sample.inc.php config.inc.php 設定ファイルを変更します。 [root@sqm-docker01 phpmyadmin]# vim config.inc.php 設定ファイルを変更したら、PHP を再起動します。 [root@sqm-docker01 phpmyadmin]# dockerを再起動しますphpfpm phpfpm phpMyAdmin Web ページにアクセスします。 URLを入力してください: http://172.16.1.30/phpmyadmin/index.php
mysql データベースに正常にアクセスしました。 。 。 。 。 。 この時点で、docker 内の複数のコンテナ間での lnmp の展開は完了です。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル
>>: Web Storage APIの使用に関する簡単な説明
CSS を使用して要素の円弧の動きを制御する方法CSS3 の新しい属性 transfrom トランジ...
目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...
私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...
コラムを更新してからどれくらい経ったでしょうか?半年ですか?今年の後半は、まさに離陸、つまり文字通り...
1. 目標: mysql の character_set_server の値を latin1 から ...
目次1. 関数とメソッドの違い2. 良い関数の書き方2.1 正確な命名2.1.1 関数の命名2.1....
この記事では、Webオンラインチャットを実装するためのVueの具体的なコードを参考までに紹介します。...
目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...
学習目標: parseInt() と Number() という 2 つの関数は、文字列をデータ型に変...
Object.definePropertyの理解文法:オブジェクト.defineProperty(o...
目次1. ミックスイン.scss 2. 単一ファイルの使用3. グローバルマウント3.1 依存関係の...
前回のブログでは、Nginx と httpd を使用して、逆生成用のバックエンド Tomcat サー...
1. スクロールビュー垂直スクロールを使用する場合は、固定の高さを指定して CSS で高さを設定する...
1. ubuntu16.04 イメージと対応する ubuntu16.04 カーネル バージョンのソー...
MYSQL でよく使用されるクエリ コマンド: mysql> select version()...