環境準備: 複数のコンテナに基づいてホストに 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の使用に関する簡単な説明
目次序文1. ラベルスタイルを定義する2. GeoJSONデータのシミュレーション3. Vercto...
目次負荷分散に nginx を使用するための 2 つのモジュール:アップストリームはロードノードプー...
この記事では、例を使用して MySQL カスタム関数の原理と使用方法を説明します。ご参考までに、詳細...
目次フレーム最高レベルのエラー報告活発なコミュニティとチーム冗談モカ推奨プラグインVue テストライ...
Msyqlデータベースのインストール、参考までに具体的な内容は次のとおりです。 ①ブラウザでhttp...
目次1. 条件付きアクセス属性2. アロー関数の紹介1. 条件付きアクセス属性?. は ES2020...
序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...
目次setState は同期ですか、それとも非同期ですか?カスタム合成イベントと React フック...
Docker はますます成熟し、その機能もますます強力になっています。 Docker Stack を...
まず、Linux システムで実行されているノード プロセスはプロセスを強制終了できないことを紹介しま...
MySQL 4.x 以降では、全文検索 MATCH ... AGAINST モード (大文字と小文字...
オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...
insとdel は、HTML 4.0 で導入され、文書の作成時に作成者が共同作業できるようにし、また...
最近のビジネスでは、オンライン トレーニング システムが特定のオンライン プレビュー ページに対する...
1: グループ化関数の記述順序 1 選択 ... 2 から ... 3 どこで ... 4 グループ...