为什么在使用相同的Dockerfile时,pecl会在另一台主机上安装不同版本的xdebug?

我有一个PHP项目。 我已经使用docker和docker-composebuild立了一个dev堆栈。 PHP应用程序使用php:7.1.2-apache图像作为其基础。

运行时:

 pecl install xdebug 

容器内,我的容器安装:

 PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303 

然而,现在,一个同事build立了这个容器,并且还调用了pecl install xdebug脚本,但是对于他们来说,它安装了一个不同的版本:

 PHP Api Version: 20151012 Zend Module Api No: 20151012 Zend Extension Api No: 320151012 

为什么pecl install在相同的docker设置安装不同的版本?

(主要区别是主机,我的是一个Ubuntu 16.04,我的同事使用的是MacOS;但docker工人应该抽象出差异。)

什么是导致在PHP的API版本的差异?

我想知道什么是实际的版本安装。 由于这是相关的,因为对于开发设置,我手动安装一个configuration文件,我精确定位到该xdebug文件:

 $ cat docker/php/apache2/20-xdebug.ini zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so xdebug.remote_enable=1 xdebug.idekey=pstorm xdebug.remote_autostart = 1 

我并不期待改变的道路。

 myapp: build: . hostname: myapp ports: - "4430:443" - "8080:80" command: scripts/start.sh volumes: - ./docker/php/apache2/20-xdebug.ini:/usr/local/etc/php/conf.d/20-xdebug.ini - ./:/var/www/myapp - ./docker/bashrc:/root/.bashrc 

我的目标是始终正确安装和加载相同的xdebug版本。

这是一个docker工人使用错误。

我的同事做到了:

 $ git pull $ docker-compose up -d 

为了启动容器。 由于他们已经build立了过去的容器,没有重build容器,而是重用了一个过时的容器,基于php7.0

所以他们必须运行:

 $ docker-compose up --build 

强制重build它。 然后安装脚本按预期工作。