安装 php 多版本

1.第一步复制修改laradock/docker-compose.yml 文件中 php-fpm 放到 php-fpm 的下面,修改如下

## php-fpm 7.0 
php-fpm70:      # 修改名字为 php-fpm70
  build:
    context: ./php-fpm
    args:
      # ...
      - LARADOCK_PHP_VERSION=7.0    # 直接写死版本号,或者 .env再加一个变量
      # ...
  volumes:
    # ...
    - ./php-fpm/php7.0.ini:/usr/local/etc/php/php.ini   # 使用 7.0 的配置文件
    # ...

2.第二步修改 site 配置文件

  • 方法一,修改站点配置文件
fastcgi_pass php-upstream;
替换为
fastcgi_pass php-fpm70:9000;
  • 方法二
nginx Dockerfile 文件修改
在这句下面
ARG PHP_UPSTREAM_CONTAINER=php-fpm
增加 php-fpm70 的变量
ARG PHP70_UPSTREAM_CONTAINER=php-fpm70
在这句下面
# Set upstream conf and remove the default conf
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \
    && rm /etc/nginx/conf.d/default.conf
增加 php-fpm70
# 写入 php-fpm70
RUN echo "upstream php70-upstream { server ${PHP70_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" >> /etc/nginx/conf.d/upstream.conf
然后将站点配置文件修改为
fastcgi_pass php-upstream;
替换为
fastcgi_pass php70-upstream;

修改完记得 docker-composer build nginx才生效

3.第三步,自动跟随启动

docker-compose.yml文件中  nginx 模块
depends_on:
    - php-fpm
    - php-fpm70     # 增加 php-fpm70

nginx启动报以下错时

nginx: [emerg] host not found in upstream "php-fpm70" in /etc/nginx/sites-available/tntm.conf:25

要查看php-fpm70服务是否已经启动