一. 準備開發(fā)環(huán)境
最近學習 laravel唧躲,發(fā)現(xiàn)MVC 的概念和 Asp.net 很類似。不想把本機的環(huán)境搞得混亂,找到了 laradock 的這個好東西。(P.S.?自從有了 docker拌消,各種開發(fā)環(huán)境的搭建就變得非常簡單了。)
按照 laradock.io 的說明安券,很容易就把開發(fā)環(huán)境搭建好了墩崩。第一部分簡單記錄下搭建步驟。
我的是 Mac 系統(tǒng)侯勉,打開終端鹦筹,進入某個目錄(e.g. /Users/<user>/)。然后clone laradock壳鹤。
1.?git clone https://github.com/Laradock/laradock.git
進入 laradock 目錄(/Users/<user>/laradock/)盛龄。后面很多命令都需要在這里運行的饰迹。
2. cp env-example .env
然后打開.env 文件芳誓,修改 APPLICATION 的值,指向希望存放代碼的目錄啊鸭,相對路徑或絕對路徑都可以(e.g. /Users/<user>/projects)
3. docker-compose up -d nginx mysql redis phpmyadmin
通過 docker-compose 來啟動項目需要的模塊(每個模塊是單獨的 docker 容器)锹淌。workspace和 php-fpm 會自動運行的,所以不需要指定赠制。這里我需要運行 nginx, mysql, redis 以及 mysql 的管理工具赂摆。
如果在瀏覽器輸入 http://localhost 會提示404挟憔。為了測試環(huán)境是否正確,可以在 APPLICATION 指定的目錄(/Users//projects)下面創(chuàng)建 public子目錄烟号,里面放一個 index.php 文件绊谭,這樣 http://localhost 就能訪問到了。
不過我們想要 laravel 框架汪拥,所以需要進入 workspace 容器里面达传,創(chuàng)建基于 laravel 的工程。
4.?docker-compose exec --user=laradock workspace bash
現(xiàn)在你會發(fā)現(xiàn)已經(jīng)進入了 workspace 的容器了迫筑,并且用戶是 laradock宪赶。當前的目錄是/var/www。這個目錄正好是 host 機器里面的/Users/<user>/projects 一個映射「迹現(xiàn)在可以創(chuàng)建項目了搂妻,輸入命令
5. composer create-project laravel/laravel coolapp
這里的 coolapp 是項目的名字,可以隨意指定辕棚。如果像我一樣等了很久也沒有反應的話欲主。先通過 ctrl+c 結束命令。需要先設置國內(nèi)的鏡像逝嚎。執(zhí)行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
composer create-project laravel/laravel coolapp?
輸入 exit 退出 workspace容器岛蚤,你會發(fā)現(xiàn)/Users/<user>/projects 下面多了一個 coolapp 的目錄。還是在 laradock 目錄里面懈糯,執(zhí)行如下命令先停止容器涤妒。
6. docker-compose down
修改一下.env 里面APPLICATION 的值為/Users/<user>/projects/coolapp。然后可以再次啟動
7. docker-compose?up -d nginx mysql redis phpmyadmin
再瀏覽器里面輸入 http://localhost 就能發(fā)現(xiàn) Laravel 頁面了赚哗。
二. 通過 PHPStorm 調(diào)試 PHP
以前用慣了 Visual Studio她紫,發(fā)現(xiàn)能調(diào)試是一件很幸福的事。laradock 本身是支持 xdebug 的屿储,需要修改一些配置贿讹。
1. 打開.env 文件,修改下面的值够掠。
WORKSPACE_INSTALL_XDEBUG=true
PHP_FPM_INSTALL_XDEBUG=true
2. 修改Laradock/PHP-FPM/xdebug.ini 以及 Laradock/workspace/xdebug.ini文件民褂,修改或添加如下的內(nèi)容:
xdebug.remote_enable=1
xdebug.remote_host=docker.for.mac.localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_connect_back=0
xdebug.remote_handler=dbgp
xdebug.max_nesting_level=250
xdebug.remote_log=”/var/www/xdebug_logs/xdebug_docker.log”
需要說明的是,remote_host 設置的是 docker 容器所在主機的地址疯潭。我的 host 是 Mac赊堪,所以可以用 docker.for.mac.localhost。如果是 windows竖哩,需要用 docker 中可以訪問的主機 ip 地址哭廉。
3. 接下來需要重新 build 容器
docker-compose build workspace php-fpm
我在 build 的時候遇到了如下的錯誤,不能下載 xdebug安裝相叁。
?--->
Running in 2c241ea48d1f
No releases available for package
"pecl.php.net/xdebug"
install failed
ERROR: Service 'php-fpm'
failed to build: The command '/bin/sh -c if [ ${INSTALL_XDEBUG} = true ]; then ? ? pecl install
xdebug && ? ? docker-php-ext-enable xdebug ;fi' returned a non-zero code: 1
后來發(fā)現(xiàn)連上 VPN 就可以了成功 build 了遵绰。
4. 重啟容器
docker-compose down && docker-compose up -d nginx mysql redis phpmyadmin
5. 打開 PHPStorm辽幌,進入Preferences->Language & Frameworks->PHP->Servers,新建一個 server,這里取名 php-fpm。
Host 里面填入 laradock拱层。這是因為laradoc/.env 文件里面有一行設置了 serverName。
### Remote Interpreter ####################################
# Choose a Remote Interpreter entry matching name. Default is `laradock`
PHP_IDE_CONFIG=serverName=laradock
然后設置 host 機器里面的代碼目錄以及與server 的映射( /var/www)逛犹。
6. 配置 Run->Edit Configuration如下圖。
7.?點擊電話那個按鈕啟動監(jiān)聽梁剔,然后按下小蟲子開始 debug虽画。
8. 在瀏覽器里面輸入 URL,比如 http://localhost∪俨。現(xiàn)在就可以調(diào)試了码撰。
9. 有的時候不想調(diào)試的話,可以在 laradock 目錄下面執(zhí)行
./php-fpm/xdebug stop
需要調(diào)試的時候通過./php-fpm/xdebug start 開啟个盆。
最后說一下如何訪問phpmyadmin脖岛。在瀏覽器里面輸入 http://localhost:8080。
服務器填寫 mysql颊亮,用戶名和密碼默認都是 root.
References:
https://medium.com/full-stack-development/laradock-xdebug-ms-code-no-problem-35a4338deb3f