まず、方法を理解します。 docker exec を使用して Docker コンテナに入る Docker はバージョン 1.3.X 以降、コンテナに入るための新しいコマンド exec も提供しています。この方法は比較的簡単です。このコマンドの使い方を見てみましょう。 sudo docker exec --help 次に、このコマンドを使用して、すでに実行中のコンテナに入ります。 $ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 1. nginxを設定する Docker Hubでnginxイメージを見つける runoob@runoob:~/nginx$ docker search nginx 名前 説明 星 公式 自動化 nginx Nginx の公式ビルド。3260 [OK] jwilder/nginx-proxy docker c 用の自動化された Nginx リバース プロキシ... 674 [OK] richarvey/nginx-php-fpm Nginx + PHP-FPM 対応のコンテナが動作しています... 207 [OK] million12/nginx-php Nginx + PHP-FPM 5.5、5.6、7.0 (NG)、CentOS... 67 [OK] maxexcloo/nginx-php Nginx と ... を使用した Docker フレームワーク コンテナー 57 [OK] webdevops/php-nginx PHP-FPM 39 を使用した Nginx [OK] h3nrik/nginx-ldap LDAP/AD、SSL、プロ仕様の NGINX Web サーバー... 27 [OK] bitnami/nginx Bitnami nginx Docker イメージ 19 [OK] maxexcloo/nginx Nginx インスタンスを備えた Docker フレームワーク コンテナ... 7 [OK] ... ここで公式画像を紹介します runoob@runoob:~/nginx$ docker pull nginx ダウンロードが完了するのを待った後、ローカル ミラー リストで REPOSITORY が nginx であるミラーを見つけることができます。 runoob@runoob:~/nginx$ docker イメージ nginx リポジトリ タグ イメージ ID 作成 サイズ nginx 最新 555bbd91e13c 3日前 182.8 MB コンテナを作成して実行します。 docker run --name mynginx -p 80:80 -v /var/www:/var/www -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d -d nginx 知らせ: -v はファイル マッピングを追加し、ホスト上で変更されたファイルをコンテナーに直接マップできるようにします。ここでのディレクトリは実際の状況に応じてマッピングされます。 コンテナを作成して実行すると、docker 内の nginx が正常に起動します。nginx を再度起動するために docker に入る必要はありません。そうしないと、nginx がすでに起動しているため、ポート 80 とその他のポートが使用されているというメッセージが表示されます。 この時点で、nginx によって設定されたドメイン名検証にアクセスできます。 ここでマッピングした conf.d には主に nginx 設定ファイルが含まれており、php 設定情報は次のとおりです。 # php サーバー{ 文字セット utf-8; クライアントの最大ボディサイズ 128M; listen 80; ## ipv4をリッスンする #listen [::]:80 default_server ipv6only=on; ## ipv6をリッスンする サーバー名 www.baidu.com; ルート /var/www; インデックスindex.php; 位置 / { #-e はファイル名が存在する限り、(!-e $request_filename){ が真であることを意味します。 ^(.*)$ /index.php?s=$1 を最後に書き換えます。 壊す; } # 実際のファイルではないものはすべて index.php にリダイレクトします try_files $uri $uri/ /index.php$is_args$args; } # Yii による存在しない静的ファイルへの呼び出しの処理を回避するためにコメントを解除します #場所 ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #エラーページ 404 /404.html; # /assets ディレクトリの PHP ファイルへのアクセスを拒否する 場所 ~ ^/assets/.*\.php$ { すべてを否定する; } 場所 ~ \.php$ { fastcgi_params を含めます。 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 172.17.0.3:9000 をパスします。 #fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; } 場所 ~* /\. { すべてを否定する; } } 最後に fastcgi_pass の IP アドレスに注意してください。これは PHP 設定の FAQ に詳しく記載されています。 2. PHPの設定 Docker HubでPHPイメージを探す runoob@runoob:~/php-fpm$ docker 検索 php 名前 説明 星 公式 自動化 php Web 開発用に設計されていますが、PH... 1232 [OK] richarvey/nginx-php-fpm Nginx + PHP-FPM 対応のコンテナが動作しています... 207 [OK] phpmyadmin/phpmyadmin MySQL および MariaDB 用の Web インターフェース。123 [OK] eboraas/apache-php Apache 上の PHP5 (SSL サポート付き)、ビルド済み... 69 [OK] php-zendserver Zend Server - 統合された PHP アプリケーション... 69 [OK] million12/nginx-php Nginx + PHP-FPM 5.5、5.6、7.0 (NG)、CentOS... 67 [OK] webdevops/php-nginx PHP-FPM 39 を使用した Nginx [OK] webdevops/php-apache PHP-FPM を使用した Apache (webdevops/php ベース) 14 [OK] phpunit/phpunit PHPUnit はプログラマー向けのテストフレームワークです... 14 [OK] tetraweb/php CI および実行用の PHP 5.3、5.4、5.5、5.6、7.0... 12 [OK] webdevops/php PHP (FPM および CLI) サービス コンテナ 10 [OK] ... ここでは、5.6-fpmのタグが付いた公式イメージを取得します。 runoob@runoob:~/php-fpm$ docker pull php:5.6-fpm ダウンロードが完了するのを待った後、ローカル ミラー リストで、リポジトリが php、タグが 5.6-fpm のイメージを見つけることができます。 runoob@runoob:~/php-fpm$ docker イメージ リポジトリ タグ イメージ ID 作成 サイズ php 5.6-fpm 025041cd3aa5 6日前 456.3 MB php コンテナを作成して実行します。 docker run -p 9000:9000 --name phpfpm -v /var/www:/var/www -d php:5.6-fpm ここでファイル マッピングを作成するか、PHP コンテナー内に対応する PHP コードが存在する必要があることに注意してください。前の手順の nginx のファイル マッピングはここでは見つかりません。したがって、ファイル マッピングがない場合、127.0.0.1:9000 はこのコンテナー内のファイルを見つけることができません。 よくある質問: PHPコンテナを起動した後、nginxにアクセスすると、「502 Bad Gateway」と表示されます。 次のことを試してください。 PHPミラーのIPアドレスを表示する docker 検査 --format='{{.NetworkSettings.IPAddress}}' phpfpm 例: 192.168.4.202 次に、nginxのconf設定ファイルを変更して、fastcgi_passの値を192.168.4.202:9000に設定します。 vim /docker/nginx/conf.d/default.conf 192.168.4.202:9000 を設定します。 nginx コンテナを再起動すると、正常にアクセスできるようになります。 3. MySQLの設定 Docker Hubでmysqlイメージを探す runoob@runoob:/mysql$ docker 検索 mysql 名前 説明 星 公式 自動化 mysql MySQL は広く使用されているオープンソースの関連製品です。 2529 [OK] mysql/mysql-server 最適化された MySQL Server Docker イメージ。作成... 161 [OK] centurylink/mysql mysql を含むイメージ。 45 [OK] のように最適化されています。 sameersbn/mysql 36 [OK] google/mysql Google Compute Engine 16 用の MySQL サーバー [OK] appcontainers/mysql Centos/Debian ベースのカスタマイズ可能な MySQL コンテナ 8 [OK] marvambass/mysql Ubuntu 14.04 6 ベースの MySQL サーバー [OK] drupaldocker/mysql Drupal 2 用の MySQL [OK] Azuki で MySQL を実行するための azukiapp/mysql Docker イメージ - http:... 2 [OK] ... ここでは、5.6のタグが付いた公式イメージを取得します。 runoob@runoob:~/mysql$ docker pull mysql:5.6 ダウンロードが完了するのを待った後、ローカル ミラー リストで、REPOSITORY が mysql、タグが 5.6 のイメージを見つけることができます。 runoob@runoob:~/mysql$ docker イメージ |grep mysql mysql 5.6 2c0964ec182a 3 週間前 329 MB MySQL コンテナを作成して実行します。 docker run -p 3306:3306 --name mysql -v /usr/local/mysql:/etc/mysql/sqlinit -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 ここでのファイル マッピングの主な目的は、ホストの SQL データベース データ ファイルを Docker MySQL コンテナにマッピングして簡単にインポートできるようにすることです。MySQL コンテナのディレクトリは既存のディレクトリにすることはできないことに注意してください。既存のディレクトリにすると上書きされます。 知らせ: ここでは、my.cnf を簡単に作成できるので、自分で追加する必要はありません。 拡大する 外部ツールNavicatを使用してDockerでMySQLに接続する mysql ホストの場合は、docker で IP を入力し、次のように取得します。 docker 検査 --format='{{.NetworkSettings.IPAddress}}' mysql SSH 接続情報を入力します: 接続に成功しました! 知らせ: Docker コンテナの起動順序により、コンテナの IP アドレスが不一致になります。コンテナの IP を使用してデータベースや fastcgi に接続する場合は、コンテナの起動順序に注意してください。 コンテナを再起動します: docker restart コンテナ名/コンテナID コンテナをシャットダウンします: docker stop xxx コンテナを起動します: docker start xxx 実行中のコンテナを表示する: docker ps すべてのコンテナを表示します(実行されていないコンテナも含む): docker ps -a コンテナを作成して実行します: docker run --------------------------------------- よくあるエラー: 1. thinkphp がエラーを報告します: 未定義のクラス定数 'MYSQL_ATTR_INIT_COMMAND' pdo_mysql 拡張機能が見つからないため、データベース接続に失敗します。 php.ini を見つけて、docker の /usr/local/etc/php に php.ini のコピーをコピーし、extension=pdo_mysql.so を追加して、phpfpm を再起動します。 それでもうまくいかない場合は、phpinfoページにアクセスしてpdo_mysqlがあるかどうかを確認してください。 そうでない場合、拡張機能は存在しないため、コンパイルする必要があります。 コンパイル方法は次のとおりです。 これは2つの方法で達成できる 方法1(未検証): pecl pdo_msql 方法 2 (実行可能であることが証明されています): PHP フォルダー内の Docker の PHP コンテナーに移動します。 docker-php-ext-install pdo pdo_mysql /usr/local/bin/docker-php-ext-enable: cannot create /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini: Directory nonexistent と報告された場合 解決: /usr/local/etc/php ディレクトリの直下に、新しい conf.d ディレクトリと対応する docker-php-ext-pdo_msql.ini ファイルを作成します。 docker-php-ext-pdo_msql.ini の内容は次のとおりです。 拡張子=pdo_mysql.so 2. thinkphp がエラー _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/4e64ea6a2012f26b832b14cbc2152b28.php を報告します これは、サーバーのキャッシュ フォルダーに十分な操作権限がない、つまり Runtime に権限がないためです。すべてのキャッシュ ファイルを削除してから、Runtime777 に権限を与えてください。 sudo chmod 777 Runtime またはコードベースの最外層に 777 権限を直接設定します 3. ThinkPHPの検証コード画像が表示されない gd 拡張機能が見つかりません。インストールしてください: docker-php-ext-install pdo pdo_mysql 次のエラーが報告される可能性があります: 設定に失敗した場合は、--with-webp-dir=<DIR> を試してください。 設定に失敗した場合は、--with-jpeg-dir=<DIR> を試してください。 configure: エラー: png.h が見つかりません。 インストール: apt-get で libpng-dev と libjpeg-dev をインストールします 再度実行します: // freetype 設定を追加 docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include --with-jpeg-dir=/usr/include // docker-php-ext-install gd をインストールします php.ini に php_gd2.so を追加 gdライブラリはphpinfoに表示されます phpinfo の gd ライブラリに freetype サポートがない場合、検証コードは表示されず、エラーが報告されることに注意してください。
gd ライブラリで freeType が使用できない場合は、次の手順に従います。 docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include 再コンパイル: docker-php-ext-インストール gd エラーが発生した場合:
実行: apt-get -y install libfreetype6-dev を実行し、上記のコマンドを続けて実行します。 gd ライブラリの freetype を使用すると、検証コードが正常に表示されます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: eject を使用せずに create-react-app の設定を変更する方法
目次1. Windows システムでの Nginx のインストールと起動プロセス: 2. 起動時にN...
目次I. 概要2. 従来の多段階イメージ構築3. Buildkitを使用してイメージをビルドする4....
この記事の例では、フロントエンドのページング効果を実現するためのJSの具体的なコードを参考までに共有...
序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...
新しいプロジェクトを始めるこの記事では主に、新規プロジェクトを0から1まで取り組むプロセスを記録し、...
目次序文使用コンポーネントの記述データ構造分析プロセス分析基礎コードの分析他の要約する序文パスワード...
目次Vue+ElementUI バックグラウンド管理フレームワークでは、ElementUI とは何で...
今日午後ずっと私を悩ませたバグを記録する半月前から始めましょう。それから.................
1. dockerでtomcat8をインストールする1. Docker HubでTomcatイメージ...
1. ホットリンクの原則1.1 Webページの準備Web ソース ホスト (192.168.153...
目次構成解析サービス構築ディレクトリ構造ファイルを作成インスタンス構成サービスを開始するテストRed...
タイトルの通り、ページを修正すると以下のような状況が発生する可能性があります。現在、古いページを改修...
1. ダウンロード参考: https://www.jb51.net/softs/451120.ht...
MVCC MVCC (Multi-Version Concurrency Control) は、マル...
前回の記事「202 個の無料高品質 XHTML テンプレート (1)」に続き、123WORDPRES...