オペレーティングシステム: 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 および文字セットを変更して再起動した後の無効な回復
最近Nginxを構築しているのですが、ドメイン名でアクセスできません。 nginx 構成ファイル n...
環境: CentOS 7公式ドキュメント: http://supervisord.org/インストー...
環境: VMware VCSA 6.7 (VMware-VCSA-all-6.7.0-8169922...
Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮...
目次ステップ1: CentOS 8でパッケージを更新するステップ2: CentOS 8にNginx ...
目次父から息子へ: 1. 親コンポーネントのサブコンポーネントタグに、サブコンポーネントに渡されるデ...
目次1. 文法2. 例3. その他の関連方法長い間、reduce() メソッドの具体的な使い方を理解...
テーブルヘッダーでは、暗い境界線の色を個別に定義できます。基本的な構文<TH 境界線の色を暗く...
目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...
rpmインストールパッケージをダウンロードするMySQL公式サイト: https://dev.mys...
目次このシリーズの背景概要PostgreSQL データベースの準備ソースからインストール仮想環境の作...
成果を達成する実装コードhtml <div クラス = 'ラッパー'> ...
目次1. 動詞-if 2. <template> で v-if を使用する3. キーを使...
設定ファイルを server.xml と content.xml に書き込みます。サーバーを再起動す...
序文実際のプロジェクトの開発では、通常、プロジェクト開発フェーズ、テストフェーズ、最終オンラインフェ...