オペレーティングシステム: Alibaba Cloud ESC インスタンス centos7.4 ソフトウェア: docker-ce バージョン 18.09.3、docker-compose バージョン 1.23.2 1. swoole-redis-pdo_mysql-gd拡張機能付きのDockerイメージを作成する 1. Dockerfileを作成する vim ドッカーファイル 2. dockerfileファイルに書き込む php:7.1-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-configure pdo_mysql \ && docker-php-ext-install pdo_mysql \ && pecl インストール redis-4.3.0 \ && pecl インストール swoole \ && docker-php-ext-enable redis swoole 3. カスタム PHP イメージを作成します。イメージを構築する現在のディレクトリを指定する最後の「.」を忘れないでください。 次のコマンドを実行して docker build を実行します。 コマンドを実行します。ネットワークの問題により、実行に時間がかかります。成功すると、次のようなコードが表示されます。
この時点で、docker のカスタム myphp4 イメージが正常に作成されました。 2. docker-compose.ymlファイルを作成する mkdir pnsmr cd pnsmr vim docker-compose.yml 次のコードを書いてください バージョン: '3.0' サービス: nginx: 画像: "nginx:latest" ポート: - 「10000:80」 ボリューム: - /var/www/html:/usr/share/nginx/html php-fpm: 画像: "myphp4" ボリューム: - /var/www/html:/usr/share/nginx/html マイスク: 画像: "mysql:最新" レディス: イメージ: "redis:4.0" 実行手順 docker-compose を起動 -d 成功は目に見えてわかる
これまでのところ、nginx mysql redis phpサービスが開始されました 3. 各サービスの設定ファイルを変更する 1. ブラウザに127.0.0.1:9998と入力します。#ここにサーバーのIPアドレスを入力すると、次の画像が表示されます。 2. 次に、コンテナ内のnginx設定ファイルを変更します。まず、コマンドを使用して各コンテナのdocker IPアドレスを表示します。 docker 検査 -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) このコマンドは、docker-compose で開かれたすべてのコンテナの IP アドレスを表示できます。結果は下の図のようになります。対応する IP アドレスは内部通信に使用できます。 3. nginxコンテナの設定ファイルをコピーし、nginxがPHPを解析できるように修正します。 docker cp pnsmr_nginx_1:/etc/nginx/conf.d/default.conf nginx.conf vim nginx.conf 次のコードに変更します サーバー{ 聞く 80; server_name ローカルホスト; #文字セット koi8-r; #access_log /var/log/nginx/host.access.log メイン; 位置 / { ルート /usr/share/nginx/html; インデックス index.html index.htm; } #エラーページ 404 /404.html; # サーバーのエラーページを静的ページ /50x.html にリダイレクトします # エラーページ 500 502 503 504 /50x.html; 場所 = /50x.html { ルート /usr/share/nginx/html; } # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします # #場所 ~ \.php$ { # プロキシパス http://127.0.0.1; #} # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します # 場所 ~ \.php$ { ルートhtml; fastcgi_pass 172.24.0.3:9000;#ここにPHPコンテナのDocker内部通信IPを入力する必要があります fastcgi_index インデックス.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name; fastcgi_params を含めます。 } # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する # nginxのものと一致します # #場所 ~ /\.ht { # すべて拒否; #} } docker cp nginx.conf pnsmr_nginx_1:/etc/nginx/conf.d/default.conf # 変更した設定ファイルをコンテナにコピーします docker container stop pnsmr_nginx_1 docker container start pnsmr_nginx_1 # 設定ファイルを有効にするために nginx コンテナを再起動します vim /var/www/html/index.php # サーバーのローカル ディレクトリに新しい index.php ファイルを作成し、<?php phpinfo(); と入力して保存します vim /var/www/html/index.html # サーバーのローカル ディレクトリに新しい index.html ファイルを作成し、helloworld を出力します アクセス 127.0.0.1:9998、HTML ファイルの解析は正常です 127.0.0.1:9998/index.php にアクセスします。php ファイルの解析は正常です。 4. mysqlとredisが有効かどうかをテストする vim /var/www/html/redis.php #redis が正しく設定されているかどうかをテストするために使用します<?php $redis = 新しい Redis(); $redis->connect("172.24.0.4",6379); $redis->set('test','これはredisのテストです'); $redis->get('test') をエコーします。 127.0.0.1:9998/redis.phpにアクセスすると、redisが有効になります mysqlコンテナに入る docker exec -it pnsmr_mysql_1 bash mysqlに入り、ルートユーザーのパスワードを変更する テストファイルを作成する vim /var/www/html/mysql.php <?php $pdo = 新しい PDO ('mysql:host=172.24.0.2;dbname=mysql;port=3306','root','root123'); var_dump($pdo); 127.0.0.1:9998/mysql.php にアクセス、mysql は有効です IV. 結論 環境は正常に構成されており、docker-compose up コマンドを使用してワンクリックで生成できますが、各コンテナの構成ファイルを変更する必要があり、まだ十分に便利ではなく、最適化する必要があります。また、docker のクラスターとスタック機能は使用されていません。これについては後で説明します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL 最適化の概要 - クエリエントリの合計数
>>: MySQL 起動エラー 1067 および文字セットを変更して再起動した後の無効な回復
必要なときにサービスを有効にし、必要がないときは無効にします。データベース サービスを管理する方法:...
目次結論は実践分析拡張機能要約する結論は親コンポーネントでカスタム イベントが定義されている場合、子...
最近、VMware Horizon を導入してテストしましたが、そのコンソールにはデフォルトで ...
以下にまとめたナレッジポイントはどれもよく使われる貴重な情報ばかりですので、ぜひ上手に集めてください...
この記事では、MySQL 学習ノートの select ステートメントの完全な使用方法を例を使用して説...
目次1.MySQLデータ構造2. テーブルファイルのサイズは変更されておらず、MySQLの設計に関連...
コンテナと呼ばれるものは、実際には親イメージに基づいて読み取りおよび書き込み可能なファイル階層を作成...
この記事では、例を使用して MySQL ビューの原理と使用方法を説明します。ご参考までに、詳細は以下...
目次基本的なセレクター:レベルセレクター:属性セレクター:フィルターセレクター:フォーム属性セレクタ...
表では、右下の境界線の色を個別に定義したり、セルの左上の境界線の色を定義したりできます。これら 2 ...
MySQLの自動増分主キーIDは段階的に増加しません1. はじめにMySQL データベースにデータを...
この記事では主に、高さが不明な垂直方向の中央揃えを CSS で実装する方法を紹介し、皆さんと共有しま...
まず、データベース パーティショニングとは何でしょうか?以前、MySQL のテーブル パーティショニ...
HTML と CSS で、ボタンの色を設定したいとします。 目的の効果は得られますが、プロセスはかな...
このチュートリアルでは、LinuxにMySQLをインストールする詳細な手順を参考までに紹介します。具...