環境準備: 複数のコンテナに基づいてホストに 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 スクロールバースタイル変更コード .scroll::-webkit-scrollbar { ...
目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...
目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...
目次1. Docker の 2375 ポートを別のポートに変更します。これは一時的な対策にすぎません...
目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...
今日、新しい技を学びました。あまりやったことがなかったので、今まで知りませんでした...目的: リン...
2時間近くかけて、さまざまな方法を試しました。後で、whereでフィルタリングした後のデータ量が1ペ...
background-image は、おそらくすべてのフロントエンド開発者がキャリアの中で少なくとも...
1. 理由新しいシステムに MySQL を再インストールする必要があったので、将来詳細を忘れた場合...
MySQL では、ほとんどのインデックス (PRIMARY KEY、UNIQUE、INDEX、FUL...
序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...
私は長い間問題に取り組み、文法上の問題を何度も確認しました。しかし、後でネットで調べてみたら、突然理...
ステップ準備した静的リソースファイルを指定されたフォルダに配置しますnginx 設定ファイルを変更す...
取引特性1. アトミック性: トランザクションの開始後、すべての操作が完了するか、まったく実行されな...
この記事の例では、参考までに簡単な虫眼鏡効果を実現するためのjsの具体的なコードを共有しています。具...