Laradock workspace及php-fpm多版本

2,260 阅读2分钟

一直使用docker+laradock来开发本地项目,随着PHP8.0的到来,新项目渐渐地把PHP版本升级到了8.0,在新老项目交替开发中,发现大量命令不能兼容使用,必须切换php-fpm及workspace的php版本重新编译才能够使用。 众所周知laradock下载对应的库文件和编译需要时间不定,网络环境不好的情况下动辄就是半个多小时,非常的耽误时间。 从网上查找了无数的网站和资料,发现只有在php-fpm复制一份为php-fpm-8.x,这样可以达到同时两个版本运行,但是workspace还是要高低版本来回切换,经过反复查找、研究,借鉴了复制php-fpm的方式,同样的复制workspace。

  1. 首先打开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
  1. 找到 docker-compose.yml,在该文件内找到workspace复制一份改为workspace-php-8,并更改其中几项。 1) 更改名字 image.png 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;
  1. 大功告成
    #编译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即可查看

image.png