ドッキングウィンドウは、PHPの開発環境を使用して構築する(Mac、ドッキングウィンドウ、Nginxは、PHP-FPM、XDebugを、PHPStorm、VSCode)。
最近の変更のためのコンピュータがローカルの開発環境、採用前に仮想マシンのプログラムについて、再展開、およびディスク領域を占有する必要があるため、その後、悩んSSD、そうドッカーのプログラムのこの使用は、展開するためのポイントは大きすぎます。
この展開の原則、私の考えでは、画像を変更したり、ほとんど変化しないようにしよう、達成するために公式のミラーを使用しようとすることです。それはローカルの開発環境であるので、いくつかの新鮮なを試してみたいと思いますので、ソフトウェアの高いバージョンを使用してみてください。
この結果から、彼らはまた、学生が環境を再生しなければならないという希望は、あなたが理想的であるこの記事の手順を実行して、1を得ることができれば、ピットの一部にいくつかの助けの小さなステップを構築する必要があります。
まず環境について次のとおりです。
- ドッカー18.09.2
- nginxの1.17.1
- PHP 7.3.7
- XDebugの2.7.2
- PhpStorm 2019年1月3日
- VSCode 1.36.1
1、ドッカーインストール
ここでは、直接公式サイトで直接ここに詳細に入る、画面の指示に従っていない、Mac用ドッカードッカーが似ているダウンロードします。
2、nginxのインストール
住所:HTTPS://hub.docker.com/_/nginx
直接実行docker pull nginx
ミラーに引っ張って、
私たちは上記のアドレスによって提供されるいくつかの公式ドキュメントを参照してくださいすることができ、我々は操作に従うことができ、私個人的に代替が最初でしたローカルコピーの全体構成ディレクトリnginxのコピー、そして実行時に設定ディレクトリのnginxのディレクトリコンテナに結合し、その設定を変更し、より便利です。
ローカルコピーにnginxの設定ディレクトリ:
$ docker run --name tmp-nginx -d nginx
$ docker cp tmp-nginx:/etc/nginx /Users/yourname/Workspace/etc/nginx
$ docker rm -f tmp-nginx
説明:/ユーザー/ yournameの/ワークスペースの/ etc、これは時間にライン上で、自分の中の状況に応じて、私の個人的な作業ディレクトリで、コマンドだけでnginxのコンテナがバックグラウンドで実行を開始、設定ディレクトリが終了した後にコピー・アウトコンテナを削除。
私はそれを試してみて、効果を見ることがあります。
$ docker run --name run-nginx -d -p 80:80 -v /Users/yourname/Workspace/www:/usr/share/nginx/html:ro nginx
説明:コンテナnginxのウェブディレクトリにローカルディレクトリの結合-vパラメータは、何のバインディング設定ディレクトリが存在しない、あなたはHTTPへのWebディレクトリブラウザでhello.htmlを作成することができます:// localhost /をハロー私たちの後ろの完全な構成変更が再度起動し、あなたが船を削除することができた後、効果を確認するの.html。
メソッドを削除します。
$ docker rm -f run-nginx
3、インストールPHP-FPM
住所:HTTPS://hub.docker.com/_/php
ここで、次は私のDockerfileで、誰もが我々は、開発に使用されるいくつかのPHP拡張モジュールをインストールする必要があり、その最良の方法は、Dockerfileに応じて当社独自の画像を生成することであるため、参照することができ、あなたはそれ以外の場合は、生成された画像が比較的大きくなり、拡張子に応じてカットする必要はありません。
次のようにDockerfileを読み取ります。
# 从官方基础版本构建
FROM php:7.3.7-fpm
# 官方版本默认安装扩展:
# Core, ctype, curl
# date, dom
# fileinfo, filter, ftp
# hash
# iconv
# json
# libxml
# mbstring, mysqlnd
# openssl
# pcre, PDO, pdo_sqlite, Phar, posix
# readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard
# tokenizer
# xml, xmlreader, xmlwriter
# zlib
# 更新为国内镜像
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak \
&& echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib' > /etc/apt/sources.list \
&& echo 'deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib' >> /etc/apt/sources.list \
&& echo 'deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib' >> /etc/apt/sources.list \
&& apt-get update
# bcmath, calendar, exif, gettext, sockets, dba,
# mysqli, pcntl, pdo_mysql, shmop, sysvmsg, sysvsem, sysvshm 扩展
RUN docker-php-ext-install -j$(nproc) bcmath calendar exif gettext sockets dba mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm iconv
# GD 扩展
RUN apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& rm -r /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
# imagick 扩展
RUN export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS" \
&& apt-get install -y --no-install-recommends libmagickwand-dev \
&& rm -r /var/lib/apt/lists/* \
&& pecl install imagick-3.4.4 \
&& docker-php-ext-enable imagick
# mcrypt 扩展
RUN apt-get install -y --no-install-recommends libmcrypt-dev \
&& rm -r /var/lib/apt/lists/* \
&& pecl install mcrypt-1.0.2 \
&& docker-php-ext-enable mcrypt
# Memcached 扩展
RUN apt-get install -y --no-install-recommends libmemcached-dev zlib1g-dev \
&& rm -r /var/lib/apt/lists/* \
&& pecl install memcached-3.1.3 \
&& docker-php-ext-enable memcached
# redis 扩展
RUN pecl install redis-5.0.0 && docker-php-ext-enable redis
# opcache 扩展
RUN docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache
# xdebug 扩展
RUN pecl install xdebug-2.7.2 && docker-php-ext-enable xdebug
# swoole 扩展
RUN pecl install swoole-4.4.0 && docker-php-ext-enable swoole
# 镜像信息
LABEL Author="Stone"
LABEL Version="2019.7"
LABEL Description="PHP 7.3.7 开发环境镜像.
説明:このコンテンツはhttps://www.jianshu.com/p/20fcca06e27e Dockerfile私は著者のへの参照を行い、いくつかの調整をした、それはそれはxdebugのを維持するために最善である開発環境ですので、あなたは、自分の状況に応じて増減することができ、レッツバックが使用されます。
ここでDockerfile連結RUNがあるため、結果の画像を小さくすることができるが、それでも636Mがあり、公式のPHP:あなたは公式から最適化されるようにしたい場合は7.3.7-FPMミラーリングは、371Mですアルパインは、ここで我々が簡単に失礼な、画像の作成を提供します。
FROM php:7.3.7-fpm
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak \
&& echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib' > /etc/apt/sources.list \
&& echo 'deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib' >> /etc/apt/sources.list \
&& echo 'deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib' >> /etc/apt/sources.list \
&& apt-get update \
&& export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS" \
&& apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmagickwand-dev libmcrypt-dev libmemcached-dev zlib1g-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) bcmath calendar exif gettext sockets dba mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm iconv gd \
&& pecl install imagick-3.4.4 mcrypt-1.0.2 memcached-3.1.3 redis-5.0.0 xdebug-2.7.2 swoole-4.4.0\
&& docker-php-ext-enable imagick mcrypt memcached redis xdebug swoole \
&& docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache
LABEL Author="Stone"
LABEL Version="2019.7"
LABEL Description="PHP 7.3.7 开发环境镜像. "
ピット上のステップに何かを言う:apt-getのソースが最高の国内の情報源に置き換えられ、時にミラーそれ以外の場合は、建物の中に立ち往生することができ、公式のコンテナのデフォルトの場合は、Debianのに基づいているため、古くなっているその多くは時間のソースを見つけますこのような現在のDebian、コードネームストレッチ、確かに、文句を言うでしょう使用ジェシーパッケージとして:;我々はDockerfile生成された画像をすることができ、直接私の上に従って、「E問題を修正することができません、あなたが壊れたパッケージを開催しています。」テスト。
どこのディレクトリに実行Dockerfile:
docker build -t my-php-fpm:2019.7 .
イメージが作成された後に-tパラメータは、PHPの設定は、ローカルコピーに関連しているとして、我々はnginxの設定をコピーすることができ、上記のように、独自の名前に応じて、画像の名前とラベルを設定します。
$ docker run --name tmp-my-php-fpm -d my-php-fpm:2019.7
$ docker cp tmp-my-php-fpm:/usr/local/etc /Users/yourname/Workspace/etc/php
$ docker rm -f tmp-my-php-fpm
4、nginxの、PHP-FPM、xdebugのプロファイルを変更
nginxのは、設定ファイルを修正/ユーザ/ yournameの/ワークスペースの/ etc / nginxの/は、default.confを開いて、以下の内容を追加します。
location ~ \.php$ {
fastcgi_pass php-fpm-container:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
我々は言及するまでの指定された実行時間で、特に説明する必要が追加、「PHP-FPM-コンテナ」これは私たち自身の創造のPHP-FPMコンテナの別名です、、。
PHPの設定ファイルを変更し、次の/ユーザ/ yournameの/ワークスペースの/ etcに行く / PHP、 php.iniの名前を変更さphp.iniの開発をコピーし、あなたは自分の状況に応じてコンフィギュレーションの内容を変更することができます。
Xdebugの変更設定ファイル、/ユーザ/ yournameの/ワークスペース/など/ PHP / conf.d /ドッキングウィンドウ-PHP-EXT-xdebug.ini、 以下が追加されました
xdebug.remote_enable = On
xdebug.remote_handler = dbgp
xdebug.remote_host = host.docker.internal
xdebug.remote_port = 9001
xdebug.remote_log = /var/log/php/xdebug.log
xdebug.idekey = PHPSTOR
PHP-FPMはので、ここで我々が代わりに9001のポートをXdebugを、ポート9000を使用しているため、メインセットは、Xdebugのリモートデバッグモードの上になって、「host.docker.internal」ドッキングウィンドウ18.03が新たに追加され、ホストを得るために解決することができますIPアドレスは、その死者のIPアドレスを記述しないでください。
5、PHP-FPMを起動し、nginxのコンテナ
$ docker run --name run-my-php-fpm \
-v /Users/yourname/Workspace/www:/var/www/html \
-v /Users/yourname/Workspace/etc/php:/usr/local/etc \
-v /Users/yourname/Workspace/log/php:/var/log/php \
-d my-php-fpm:2019.7
$ docker run --name run-nginx \
-p 80:80 \
--link run-my-php-fpm:php-fpm-container \
-v /Users/yourname/Workspace/www:/usr/share/nginx/html \
-v /Users/yourname/Workspace/etc/nginx:/etc/nginx \
-v /Users/yourname/Workspace/log/nginx:/var/log/nginx \
-d nginx
注意:私は、ディレクトリを設定ディレクトリとウェブディレクトリがバインドされたログ、ローカル環境で変更するのは簡単だろう。設定は、「PHP-FPM-コンテナ」でそれを埋めるためにしている上記のnginxのを覚えていますか?実際には二つの容器を接続し、ここで指定した、とPHP-FPMへのコンテナは、アクセスの構成パスエイリアス、いくつかの名前を果たしました。
ビュー//localhost/phpinfo.phpアクセス:Phpinfo.phpはことにより、HTTP中/ユーザー/ yournameの/ワークスペース/ WWWのファイル、PHPの出力情報を作成します。
6、Chromeブラウザのプラグインxdebugのヘルパーをインストール
壁であってもよいし、自分で解決します。
7、PhpStormのデバッグ環境の設定
ちょうどPHPのコードを書く内側/ユーザ/ yournameの/ワークスペース/ WWW / Xdebugを/ demo.php、PHPファイル確立し、あなたもPhpStormして、新しい空のプロジェクトを作成することができますが、我々はバインドする位置とPHP-FPMコンテナディレクトリにあります。
メニュー:PhpStorm->環境設定...図に従って設定された優先順位を、入力します。
グラフウィンドウに基づいて、CLIインタプリタは、設定を追加「+」ポイントを設定入力するように求められます。
以下に示すように、デバッグの設定は、設定を続行します。
メインインターフェイスを入力し、右上の選択「の設定を追加し...」
デバッグの設定ウィンドウは、「+」を選択して入力した後、名前はサーバーの設定を入力するように設定し、[開始URLを設定した後、「PHPのWebページ」を選択します。「/ Xdebugを/ demo.php」
メインウィンドウに、プログラム内のいくつかのブレークポイントをヒットした後、その上に緑色のカブトムシをクリックしてください。
8、VSCodeデバッグ環境の設定
まずPHPデバッグプラグインをインストールした後、上記で作成したxdebugのディレクトリを開きます。示され、デバッグパネル、PHP下ギア選択を入力し、launch.json次いで、ファイルはpathMappingsこの構成を変更する追加されたファイルを作成し、構成パラメータは、サーバ経路及び局所経路、低いバージョンとの対応関係を設定しますlocalSourceRootとserverSourceRootは、今で廃止されました。また、9001にポートを変更することを忘れないでください。
进入 demo.php,随意设置两个断点,然后点左侧的运行按钮,进入调试模式,接下来刷新 http://localhost/xdebug/demo.php 会返回到 VSCode 的调试窗口,左侧已经列出调试信息,可选择单步执行跟踪程序的运行。
结尾:实际上这次部署环境踩了不少坑,主要原因是网上的资料都比较陈旧,很多文章也没有后续的更新,或者方向和我不太一致,例如 hub 中直接就有 xdebug 的镜像,但是我还是想尽量用官方提供的镜像自己创建,为了避免踩坑,大家最好还是多多参考官方文档,一般都写的比较清楚了。得益于 docker 的便利,我会不定期的更新这篇文章,这也是我在文章开头设置了一个版本号的原因,希望对大家有所帮助。