一直使用docker+laradock来开发本地项目,随着PHP8.0的到来,新项目渐渐地把PHP版本升级到了8.0,在新老项目交替开发中,发现大量命令不能兼容使用,必须切换php-fpm及workspace的php版本重新编译才能够使用。 众所周知laradock下载对应的库文件和编译需要时间不定,网络环境不好的情况下动辄就是半个多小时,非常的耽误时间。 从网上查找了无数的网站和资料,发现只有在php-fpm复制一份为php-fpm-8.x,这样可以达到同时两个版本运行,但是workspace还是要高低版本来回切换,经过反复查找、研究,借鉴了复制php-fpm的方式,同样的复制workspace。
- 首先打开laradock根目录下的.env
#单独一行设置php8版本
PHP8_VERSION=8.0
#定义专属于php8使用的宏
WORKSPACE_PHP8_SSH_PORT=2223
WORKSPACE_PHP8_BROWSERSYNC_HOST_PORT=4000
WORKSPACE_PHP8_BROWSERSYNC_UI_HOST_PORT=4001
WORKSPACE_PHP8_VUE_CLI_SERVE_HOST_PORT=9080
WORKSPACE_PHP8_VUE_CLI_UI_HOST_PORT=9001
WORKSPACE_PHP8_ANGULAR_CLI_SERVE_HOST_PORT=5200
- 找到 docker-compose.yml,在该文件内找到workspace复制一份改为workspace-php-8,并更改其中几项。
1) 更改名字
2)找到对应key更改为右边值,根据自身具体需求更改,有些值为了省时间没有写宏,因为没有必要设置,所以直接填写的值,严谨的同学可以自行更改。
- LARADOCK_PHP_VERSION=${PHP8_VERSION}
- INSTALL_XDEBUG=false
- INSTALL_IMAGEMAGICK=false
- INSTALL_AST=false
#端口全部更改为.env上定义的宏
ports:
- "${WORKSPACE_PHP8_SSH_PORT}:22"
- "${WORKSPACE_PHP8_BROWSERSYNC_HOST_PORT}:3000"
- "${WORKSPACE_PHP8_BROWSERSYNC_UI_HOST_PORT}:3001"
- "${WORKSPACE_PHP8_VUE_CLI_SERVE_HOST_PORT}:8080"
- "${WORKSPACE_PHP8_VUE_CLI_UI_HOST_PORT}:8000"
- "${WORKSPACE_PHP8_ANGULAR_CLI_SERVE_HOST_PORT}:4200"
3)php-fpm多版本就很容易了,网上帖子多的是,我这里为了自己记录,也简单备注一下;同在docker-compose.yml文件内,复制php-fpm为php-fpm-80(名字自定),然后更改以下几项:(多版本共存的话,有些值如果不设置false,可能造成启动不起来等报错问题)
- LARADOCK_PHP_VERSION=${PHP8_VERSION}
- INSTALL_XDEBUG=false
- INSTALL_IMAGEMAGICK=false
#端口一定要更改,我就是端口没有更改,启动的时候一直提示端口占用,不能和php-fpm一样。
ports:
- "9004:9003"
depends_on:
- workspace-php-8
4)nginx配置站点,使用到php8的项目需要在配置文件中修改
fastcgi_pass php-fpm-80:9000;
- 大功告成
#编译php-fpm-80
docker-compose build php-fpm-80
#编译workspace-php-8
docker-compose build workspace-php-8
#也可以同时编译
docker-compose up -d workspace-php-8 php-fpm-80
启动成功后,通过docker-compose exec workspace-php-8/php-fpm-80 bash分别进入容器内,打印php-v即可查看