在Windows上使用Docker为PHP5.3提供一个逐步调试环境
我在Docker中建立了一个可以逐步执行PHP 5.3的开发环境,以下是介绍其步骤。
环境
-
- OS:Windows 10
- 導入しているセキュリティソフト:ESET Internet Security
准备事先
“引入VSCode”
从官方网页下载安装VSCode。
使用Docker引入
从官方页面安装Docker
Docker的共享驱动器设置
为了从容器中访问主机PC的文件,需要进行共享驱动器的设置。
解除防火墙
因为使用ESET互联网安全软件,所以我将记下其操作步骤。
随后,返回共享驱动器设置,并重新进行设置。
搭建步态执行环境
通过在 CentOS 6.6 上导入 PHP 5.3 的映像,可以通过添加 Apache、PHP 和 XDebug 来构建环境
创建所需的文件
.
├── Dockerfile
├── .env
├── php
│ └── xdebug.ini
├── html
│ └── index.php
└── .vscode
└── launch.json
每个文件的内容如下所示。
使用Dockerfile文件依次安装Apache、PHP、XDebug到CentOS并创建镜像。
FROM centos:6.10
RUN yum update -y && \
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
RUN yum install -y \
httpd
RUN yum install -y \
php \
php-mysql \
php-devel \
php-pecl-memcache \
php-xml \
gcc && \
pecl install xdebug-2.2.7
COPY ./php/xdebug.ini /etc/php.d/
EXPOSE 80
ENTRYPOINT ["httpd", "-D", "FOREGROUND"]
.env文件
将XDebug连接到主机PC指定的位置
XDEBUG_CONFIG=remote_host=host.docker.internal
当PHP进程启动时,自动将XDebug连接到主机上的VSCode,并开始进行步骤执行的设置要进行记录在xdebug.ini文件中。
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable=on
xdebug.remote_connect_back=off
index.php
一個簡單的示範頁面
<?php
phpinfo();
启动容器
首先,为了创建图像,在PowerShell中切换到包含Dockerfile的目录,并执行以下命令。
docker build . -t php-xdebug-test
使用下面的命令启动容器。
$PROJECT_HOME_DIR=(Convert-Path .)
docker run --rm -it `
--volume="$PROJECT_HOME_DIR/html:/var/www/html" `
--env-file="$PROJECT_HOME_DIR/.env" `
-p 80:80 `
php-xdebug-test
确保在浏览器中访问http://localhost时,能够显示PHP信息。
执行步骤
使用VSCode打开包含Dockerfile的目录。
launch.jsonファイルが自動で作成されるので、「Listen for XDebug」を以下のように書き換える
pathMappingsにより、コンテナ内のディレクトリとホストPCのディレクトリを対応させている
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/var/www/html": "${workspaceRoot}/html"
}
}
请参阅以下内容
-
- Macでの環境構築:https://qiita.com/gcoka/items/c2801a20496851e3ace6
共有ドライブ設定:https://qiita.com/chimatter/items/5e2768baeb8983525602
ファイアウォールの設定:https://qiita.com/spiderx_jp/items/fa8d5ffe298759df9e06
コンテナからホストへアクセス:http://nobutaka-saito.hatenadiary.jp/entry/2018/04/18/080050