2017-04-25 45 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 

強制重建它。然後安裝腳本按預期工作。

相關問題