feature list

2 用户管理
    - 注册 登录
    - 权限
    - 用户中心
1 首页
    - 轮播
2 文章
    - 点赞 浏览
    - 评论 分享

环境

win10+wsl+laradock.

参考

laravel 6.0:

https://xueyuanjun.com/post/19912.html

工程创建

lbash下使用composer. 切换国内源:

composer config -g repo.packagist composer https://packagist.phpcomposer.com 

laravel 6.0安装器:

composer global require laravel/installer

目的是一键生成laravel相关的composer.json:

laravel new blog

cd 到blog,安装依赖:

composer install

自动生成曾autoload相关文件:

composer dump-autoload

尝试lbash运行dev,这是最快的dev方式了吧,很类似yarn serve

php artisan serve --port 10000 --host 0.0.0.0

由于php是跑在docker里的,还需要把端口给暴露出来:

修改laradocker docker-compose.yml的php-fpm的expose,先添加10000这个端口:

ports: "10000:10000"

xdebug调试准备

上面的php跑在php-fpm这个container里,所以需要改里面的xdebug.ini:

xdebug.remote_host=dockerhost
;xdebug.remote_host=127.0.0.1
xdebug.remote_connect_back=0
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_log=/var/tmp/xdebug.log

xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.cli_color=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir="~/xdebug/phpstorm/tmp/profiling"

xdebug.remote_handler=dbgp
xdebug.remote_mode=req

xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1

同时phpstorm配置好:

PHP interpreter 来自docker php-fpm 20191017171412.png

server: 20191017171522.png

remote debug设置:

20191017171604.png

如果想按page调试,也可以设置:

20191017171638.png

神奇的是一定要在xdebug.ini里配置remotehost为dockerhost.

分析remotehost=dockerhost

listen端口10000是在docker的php-fpm container里打开:

php artisan serve --host 0.0.0.0 --port 10000:

0.0.0.0意味着docker网络内部所有地址都能访问,

这个端口已通过docker-compose.yml配置的ports暴露给主机,因此windows host也可以打开和调试

dockerhost到底多少?

#in docker-compose.yml
extra_hosts:
    - "dockerhost:${DOCKER_HOST_IP}"

DOCKER_HOST_IP定义在.env里即10.0.75.1.

extra_hosts是给10.0.75.1设置了网络名称,可以在workspace container的/etc/hosts里看到:

20191017174028.png

为何是10.0.75.1?

这涉及windows docker的原理: Docker HyperV vEthernet (DockerNAT)

这个太复杂了,暂时整不明白…涉及到知识有windows hyperV, NAT, 虚拟网卡…

有点像这个: https://blog.csdn.net/u010948569/article/details/80766597

20191017182950.png

总之10.0.75.1是Windows host的地址. 访问localhost:1000010.0.75.1:10000是一样的效果.

实际docker 内部还是172.17.x.x的网络,可以用过docker network inspect看到.