LNMP と phpMyAdmin を Docker にデプロイする方法

LNMP と phpMyAdmin を Docker にデプロイする方法

環境準備:

複数のコンテナに基づいてホストに lnmp をデプロイします。
nginx サービス: 172.16.10.10
mysql サービス:172.16.10.20
php サービス:172.16.10.30

コンテナの 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 設定ファイルをコピーします。

パラメータの説明:

  • 実行: 新しいコンテナを作成する
  • -d: バックグラウンドで実行
  • --name: カスタム名は test1 です

ファイルをマウントするホスト上にディレクトリを作成します。

ウェブサイトのメインディレクトリ: /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 conf.d目錄下的default.conf文件,而不是nginx.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

パラメータの説明:

  • run: コンテナを実行する
  • -itd: i: インタラクティブ
  • t: 擬似端末
  • d: コンテナをバックグラウンドで実行し続ける
  • --network : どのネットワークカードに基づいてネットワークを作成するか
  • --ip: コンテナのIPアドレスを定義します
  • -v = --volume データボリューム、マウントを実行
  • マウント形式: ホスト: コンテナ内
  • p: マップされたポート、ホストポート: コンテナ内のポート

(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

知らせ:
nginx と PHP が Web ページを保存するためのディレクトリを共有し、PHP が nginx と同じデフォルトの Web ルート ディレクトリを作成することを確認します (-v がマウントされている場合、コンテナー内にディレクトリが存在しない場合は自動的に作成されます)。

(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 .

パラメータの説明:

  • ビルド: ビルド
  • -t : タグを指定する
  • . は現在のディレクトリにあるDockerfileを示します

ビルドが完了したら、元の 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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Mac で docker を使って PHP 開発環境を構成する方法
  • PHP の Docker インストールと Nginx を使用したデプロイメントの例
  • DockerにPHP拡張機能をインストールする手順の説明
  • Docker を使用して OpenLDAP+phpLDAPadmin 統合ユーザー認証を構築する方法
  • Docker ビルド PHP 環境チュートリアル詳細説明
  • docker に php-fpm サービス/拡張機能/構成をインストールする詳細なチュートリアル
  • PHP環境構築におけるDockerの柔軟な実装
  • PHP は docker を使用してワーカーマンを実行するケースの説明

<<:  Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル

>>:  Web Storage APIの使用に関する簡単な説明

推薦する

vmware workstation12 インストール CentOS プロンプト VMware Player と Device/Credential Guard に互換性がない、理由と解決策

最新バージョンの WIN10 では、Microsoft は仮想化コンテナに基づくセキュリティ メカニ...

ランダムな文字を生成する Java サンプルコード

サンプルコード: java.util.Random をインポートします。 java.util.UUI...

Dockerはbusyboxを使用してベースイメージを作成します

Docker イメージの最初の行は FROM alpine などのイメージで始まりますが、最初のベー...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

JS正規RegExpオブジェクトについての簡単な説明

目次1. RegExpオブジェクト2. 文法2.1 定義2.2 修飾子2.3 角括弧2.4 メタ文字...

Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する

債券とは何かNIC ボンドは、実稼働シナリオでよく使用されるテクノロジーです。複数の NIC を 1...

VueでJSXを使用する方法

JSXとは何かJSX は Javascript の構文拡張であり、JSX = Javascript ...

MySQL 8.0.23 インストールの超詳細なチュートリアル

目次序文1. 公式サイトからMySQLをダウンロードする2. 解凍ファイルを設定する3. 初期化4....

パスワードログインなしのLinux構成スタンドアロンおよびフルディストリビューションの詳細なチュートリアル

目次1: 単一マシンのパスワードフリーログイン構成1. 仮想マシンのホスト名を設定する2. 仮想マシ...

メタタグを簡単に説明すると

META タグは、一般的に タグと呼ばれ、HTML Web ページのソース コード内の重要な HTM...

Windows 10 に付属する仮想マシンのネットワークを設定するための詳細な手順 (グラフィック チュートリアル)

1. サーバー ホストをクリックし、右側の操作リストで [仮想スイッチ管理] をクリックして、仮想...

記事では、js を使用して弾幕効果を実現する方法を説明します

目次新しい HTML ファイルを作成します。初期テンプレートを作成するHTML の追加CSS パディ...

Docker CPU 制限の実装

1. --cpu=<値> 1) コンテナが使用できるCPUリソースの量を指定しますが、コ...

MySQLデータテーブルの基本操作:テーブル構造の操作、フィールド操作例の分析

この記事では、テーブル構造操作やフィールド操作など、MySQL データ テーブルの基本的な操作につい...

vue.config.js からプロジェクト最適化までの vue2.x 構成

目次序文vue.config.js 構成オプションパッケージサイズを縮小するためのパッケージの最適化...