国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

PHPSTORM中怎么調試Docker項目

發(fā)布時(shí)間:2021-09-14 11:25 來(lái)源:億速云 閱讀:0 作者:Leah 欄目: 網(wǎng)絡(luò )安全

這篇文章給大家介紹PHPSTORM中怎么調試Docker項目,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Docker基本用法

首先要知道 Docker 最基本的兩樣東西:imagecontainer

image        鏡像,搭建一個(gè) Docker 環(huán)境最基本的就是 image??梢?strong>簡(jiǎn)單理解為這就是創(chuàng )建虛擬機的那個(gè)鏡像。

container  容器。即 依據 image,創(chuàng )建出來(lái)的虛擬環(huán)境??梢?strong>簡(jiǎn)單理解為就是運行著(zhù)的虛擬機

Docker 的配置文件為 Dockerfile。該文件內容為構建 container 的命令?;久钣校?/p>

FROM     設置 container 運行在哪個(gè) image 上。必須寫(xiě)在 Dockerfile 的開(kāi)頭??梢栽?Docker Hub里找適合的 image。

RUN        在 image build時(shí)執行命令。一般用于安裝環(huán)境

CMD       在 container剛啟動(dòng)時(shí)執行命令。一般用于啟動(dòng)服務(wù)

COPY      將宿主機的文件拷貝到 container中

WORKDIR   設置工作目錄。所有命令都會(huì )在這個(gè)目錄的基礎上進(jìn)行工作

了解了上面的三個(gè)命令后,我們可以來(lái)簡(jiǎn)單寫(xiě)一個(gè) Dockerfile了。

#基礎 image 為 php:7.3-apache
FROM php:7.3-apache
#安裝 xdebug 擴展 并開(kāi)啟
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
#將 宿主機的 phpinfo.php 拷貝到 container /var/www/html/phpinfo.php 中
COPY ./phpinfo.php /var/www/html/phpinfo.php

寫(xiě)完后在 Dockerfile 的目錄里運行

docker build -t test/testmyphp .

等命令跑完,輸入以下命令即可看到創(chuàng )建好的 image

$ docker image ls
REPOSITORY   TAG   IMAGE ID  ......
test/testmyphp   latest  4931b92274f2 ......

要想讓 container 運行起來(lái),使用如下命令。使用-p來(lái)指定映射端口,左邊是宿舍機端口,右邊是 container 端口

docker run -p 81:80 test/testmyphp

查看運行中的 container

$ docker container ls
CONTAINER ID        IMAGE           PORTS            ......
10b8c28b2f69        test/testmyphp     0.0.0.0:81->80/tcp   ......

進(jìn)入 container 的 shell

$ docker exec -it CONTAINER_ID值 bash
root@10b8c28b2f69:/var/www/html#

至此,基本的 Docker 環(huán)境我們就建好了。接下來(lái)研究下如何讓 PHPSTORM 調試 Docker 項目

調試方式一 - Docker掛載調試

這里做測試使用前文的 Dockerfile,需要按照實(shí)際情況進(jìn)行配置添加。

配置Dockerfile

#基礎 image 為 php:7.3-apache
FROM php:7.3-apache
#安裝 xdebug 擴展 并開(kāi)啟
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
# !!! 使用一個(gè)啟動(dòng)腳本來(lái)啟動(dòng)服務(wù) !!!
COPY ./start.sh /start.sh
RUN chmod +x /start.sh
CMD ["/start.sh"]

start.sh 內容

#配置 Xdebug
echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.client_port = 9003" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.mode = debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.max_nesting_level = 1000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.discover_client_host = true" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
#重啟 apache ssh
service apache2 restart

重建 image:

#最好先刪掉之前的再重建
docker image rm IMAGE值 -f
docker build -t test/testmyphp .

重建完先不急著(zhù)跑 container。先定位到我們的項目代碼位置

使用 Docker 的 Bind mounts 技術(shù)。將宿主機的項目目錄映射到 container 的網(wǎng)站目錄下

docker run -p 81:80 --mount type=bind,source=/home/xp/test_docker/test_program,target=/var/www/html test/testmyphp

至此,調試環(huán)境所需要的服務(wù)就安裝好了,接下來(lái)配置 PHPSTORM。

配置 PHPSTORM

直接使用Open打開(kāi)項目

配置 目錄映射

進(jìn)入 File -> Settings -> Languages & Frameworks -> PHP -> Servers。配置目錄映射

注意一定要把 Use path mappings 的勾勾上,才能配置目錄映射

Absolute path on the server 是要手動(dòng)打上路徑的

設置Xdebug端口

進(jìn)入 File -> Settings -> Languages & Frameworks -> PHP -> Debug。設置 Xdebug Debug port 為 9003。和 php 配置一致。

配置一個(gè) Run/Debug Configuration

點(diǎn)擊 PHPSTORM 右上角的 Add Configuration....。進(jìn)入配置面,新增一個(gè) PHP Web Page。并進(jìn)行如下簡(jiǎn)單的配置即可(改名字設url 路徑)

啟動(dòng) PHP Debug Listening

直接點(diǎn)擊 PHPSTROM 右上角的 小電話(huà) ,即可開(kāi)啟監聽(tīng)

驗證

在 php文件上打上斷點(diǎn),點(diǎn)擊 右上角 甲殼蟲(chóng)樣式的 Debug按鈕。即可成功斷點(diǎn)

調試方式二 - ssh 隧道

這種方式不僅僅可以用在 Docker 環(huán)境上,同樣可以用在 遠程服務(wù)器上。缺點(diǎn)就是要在 container 里頭安裝許多額外服務(wù)。

配置Dockerfile

  1. 安裝ssh服務(wù)。 PHPSTORM需要 ssh 來(lái)進(jìn)行目錄映射,不然無(wú)法成功 Debug

  2. 安裝 xdebug。這是調試的基礎擴展組件

  3. 設置 ssh 允許 root 登陸。畢竟只是個(gè) docker 調試環(huán)境,就不弄那么麻煩了。當然如果是線(xiàn)上業(yè)務(wù)啥的當然要做好權限分配。

  4. 修改 root密碼。畢竟不知道密碼也無(wú)法連接

  5. 啟動(dòng) ssh 服務(wù)

  6. 重啟 apache 服務(wù)

這里做測試使用前文的 Dockerfile,需要按照實(shí)際情況進(jìn)行配置添加。

修改前文的 Dockerfile。

#基礎 image 為 php:7.3-apache
FROM php:7.3-apache

ENV APACHE_DOCUMENT_ROOT /var/www/html
#安裝 ssh 服務(wù)
RUN apt-get update && \
apt-get install ssh -y
#安裝 xdebug 擴展 并開(kāi)啟
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
#將宿主機的 phpinfo.php 拷貝到 container /var/www/html/phpinfo.php 中
COPY ./phpinfo.php /var/www/html/phpinfo.php
# !!! 使用一個(gè)啟動(dòng)腳本來(lái)完成流程 3 4 5 的工作 !!!
COPY ./start.sh /start.sh
RUN chmod +x /start.sh
CMD ["/start.sh"]

start.sh 內容

#!/bin/bash
#設置 ssh 允許 root 登錄
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
#修改root密碼
echo root:123456 | chpasswd
#配置 Xdebug。Xdebug 3 的配置如下,和 Xdebug 2不太一樣
echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.client_port = 9003" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.mode = debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.max_nesting_level = 1000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.discover_client_host = true" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
#重啟 apache ssh
service apache2 restart
service ssh restart
#要加上這個(gè),不然 container 運行完就停止了。
sleep infinity

重建 image:

#最好先刪掉之前的再重建
docker image rm IMAGE值 -f
docker build -t test/testmyphp .

啟動(dòng) container:

docker run -p 81:80 -p 2222:22 test/testmyphp

至此,調試環(huán)境所需要的服務(wù)就安裝好了,接下來(lái)配置 PHPSTORM。

配置 PHPSTORM

打開(kāi) PHPSTORM,新建一個(gè) Project。選擇 New Project from Existing Files

選擇 Web server is on remote host。

一路 Next。走到配置 Remote Server

然后又是一路 Next 即可。

配置完成后,將能看到我們的項目。

此時(shí)是不能直接進(jìn)行代碼調試的。我們要做以下工作

  1. 配置 CLI Interpreter

  2. 配置目錄映射

  3. 設置Xdebug端口

  4. 配置一個(gè) Run/Debug Configuration

  5. 啟動(dòng) PHP Debug Listening

ps:由于有些步驟是一樣的,就直接拉上文的截圖過(guò)來(lái)了。

配置 CLI Interpreter

進(jìn)入 File -> Settings -> Languages & Frameworks -> PHP。設置 CLI Interpreter

新建一個(gè) CLI Interpreter。選擇 From Docker, Vagrant, VM, WSL,Remote....

這里我們可以填 SSH,也可以直接選擇 Docker。我這里用的是 SSH

設置 PHP executable 路徑。不知道可以進(jìn)入 container 中使用whereis php進(jìn)行搜索

配置 目錄映射

進(jìn)入 File -> Settings -> Languages & Frameworks -> PHP -> Servers。配置目錄映射

注意一定要把 Use path mappings 的勾勾上,才能配置目錄映射

Absolute path on the server 是要手動(dòng)打上服務(wù)器路徑的

設置Xdebug端口

進(jìn)入 File -> Settings -> Languages & Frameworks -> PHP -> Debug。設置 Xdebug Debug port 為 9003。和 php 配置一致。

配置一個(gè) Run/Debug Configuration

點(diǎn)擊 PHPSTORM 右上角的 Add Configuration....。進(jìn)入配置面,新增一個(gè) PHP Web Page。并進(jìn)行如下簡(jiǎn)單的配置即可(改名字設url 路徑)

啟動(dòng) PHP Debug Listening

直接點(diǎn)擊 PHPSTROM 右上角的 小電話(huà) ,即可開(kāi)啟監聽(tīng)

驗證

在 php文件上打上斷點(diǎn),點(diǎn)擊 右上角 甲殼蟲(chóng)樣式的 Debug按鈕。即可成功斷點(diǎn)

擴展 - 遠程服務(wù)器調試

這里可以擴展以一下,如果調試目標是遠程服務(wù)器而不是本地 Docker,該如何配置?

其實(shí)和上面的步驟一樣的,只是 Xdebug 監聽(tīng)的流量我們要做修改下。

簡(jiǎn)單說(shuō)說(shuō) Xdebug 監聽(tīng)的原理:

當 php-xdebug 接收到帶有 XDEBUG_SESSION_START 的請求時(shí),將會(huì )把當前的 Debug信 息發(fā)送給 xdebug 中配置的 client_host 和 cilent_port。

在我們的 start.sh 啟動(dòng)文件中,設置如下:

xdebug.client_host = host.docker.internal
xdebug.client_port = 9003

host.docker.internal值在 Xdebug 中是自動(dòng)將請求端的 ip 設置為 調試端,即自動(dòng)將 Debug信息 發(fā)送給任何請求IP。

xdebug.client_port的值是 Debug信息 被發(fā)送至的端口。

我們可以想下,在本地,xdebug端是能訪(fǎng)問(wèn)到到我們請求端的 ip 和 端口 的,因為都是同一局域網(wǎng)。

但若調試的是遠程服務(wù)器,由于公網(wǎng)和內網(wǎng)的原因,公網(wǎng)服務(wù)器是無(wú)法發(fā)送 Debug信息 調試端的(除非調試端也在公網(wǎng)上。。)

所以我們需要將xdebug.client_host設置為127.0.0.1,讓 xdebug 轉發(fā) Debug信息 到本地的 9003 端口中。

接著(zhù)使用 ssh 隧道進(jìn)行端口轉發(fā),把調試端監聽(tīng)的 9003 端口映射到 服務(wù)端的 9003 上。這樣就能接收到 xdebug 轉發(fā)的 Debug信息了。這一點(diǎn)使用 ssh 隧道是可以做到的。

我們來(lái)測試下,首先修改 php.ini。讓xdebug.client_host值為127.0.0.1

進(jìn)行 ssh隧道端口轉發(fā)

ssh -N -R 遠程IP:遠程端口:127.0.0.1:9003 root@遠程IP

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

女人18片毛片60分钟| 国产精品一亚洲AV日韩AV欧| 人人妻人人澡人人爽人人精品97| 精品国产A∨无码一区二区三区| 亚洲欧美中文日韩在线v日本| GOGOGO高清在线观看中文版|