2017-04-25 61 views
0

我有一个php项目。我使用docker和docker-compose建立了一个dev堆栈。该PHP应用程序使用php:7.1.2-apache图片作为其基础。为什么在使用相同的Dockerfile时,pecl会在另一台主机上安装不同版本的xdebug?

当运行:

pecl install xdebug 

的容器,我的容器安装:

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

而现在,一个同事建立该容器也exutes该脚本调用pecl install xdebug,但对于他们安装不同的版本:

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

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

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

是什么原因造成的PHP API版本有什么区别?

我想知道什么是实际的版本安装。由于这是相关的,因为对于开发设置,我手动安装,我查明该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版本。

+0

你可以添加一个Dockerfile来重现它吗? 20151012看起来更像php 7.0 –

+0

@AlexBlex感谢您指出这一点。这确实是一个过时的php7.0容器,因为我的同事没有重建它,只是开始过时的,期望它自动重建。 – k0pernikus

回答

0

这是一个码头组成使用错误。

我的同事做的:

$ git pull 
$ docker-compose up -d 

为了启动容器。由于他们过去已经建造了集装箱,因此不会重建集装箱,而是重新使用过时的集装箱,基于php7.0

所以他们只好跑:

$ docker-compose up --build 

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

相关问题