オペレーティングシステム: 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 および文字セットを変更して再起動した後の無効な回復
この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...
一般的に使用される方法は次の 4 つです。 1.locate()メソッドを使用する一般的な使用法: ...
質問: Vue にブログ投稿をアップロードするためのフォームがあり、タイトル、本文、説明、スニペット...
1. HTML送信ボタンと下部ボタンの基本構文構造1. HTML送信ボタン入力タグで type=&...
「/」はルートディレクトリ、「~」はホームディレクトリです。 Linux ストレージはツリー状にマウ...
目次実装のアイデア:ステップ 1: TabBar と TabBarItem のコンポーネント カプセ...
戦争パッケージを準備する1. 既存のSpringBootプロジェクトを準備し、pomに依存関係を追加...
目次1. トリガーの紹介1. トリガーとは何ですか? 2. トリガーの特徴2. トリガーを作成する1...
目次序文数独の解き方最初のボックスに記入してください2番目のボックスに記入してください3番目のボック...
目次1. axiosをインストールする2. アクシオスの使用1.ホームページでaxiosを参照する2...
序文ご存知のとおり、nginx 構成ファイルは add_header ディレクティブを使用して応答ヘ...
目次1. 共有ロックと排他ロック2. 意図ロック3. レコードロック4. ギャップロック5. ネクス...
目次チェーン呼び出し小さなケースチェーン呼び出しjQuery オブジェクトが任意のメソッド (ノード...
この記事では、MySQL の自動作成時刻と変更時刻を設定する方法について説明します。ご参考までに、詳...
このブログのすべてのコンテンツは、クリエイティブ コモンズ ライセンスの下でライセンスされています。...