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

时间:2017-04-25 15:46:48

标签: php docker docker-compose xdebug

我有一个php项目。我使用docker和docker-compose设置了一个dev堆栈。 php应用程序使用php:7.1.2-apache图像作为基础。

运行时:

pecl install xdebug

容器内,我的容器安装:

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

然而,现在,一位同事构建了该容器并且还将该脚本调用pecl install xdebug,但对于他们来说,它安装了不同的版本:

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

为什么同一个docker setup上的pecl install会安装不同的版本?

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

造成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版本。

1 个答案:

答案 0 :(得分:0)

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

我的同事做了:

$ git pull
$ docker-compose up -d

为了启动容器。由于他们过去已经构建了容器,因此没有重建容器,而是根据php7.0重用过时的容器。

所以他们必须跑:

$ docker-compose up --build

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