使用docker製作多版本php-cli指令

因為工作剛好需要經手到一個骨灰級的php專案,clone and install後第一件事就是跑測試,

但是本地端的php版本是7.4,一跑下去本來沒錯誤的測試都過不了,

想起公司大神曾玩過的docker container tools,這次就來試一下吧~

建立php-cli image

  • 首先下載使用php5.6-cli這個docker image。

    1
    docker run -it php:5.6-cli bash
  • 進container後執行php -v確認版本資訊。

  • 我們測試使用phpunit需要安裝xdebug。
    查詢PHP支援的對應xdebug版號,https://xdebug.org/download/historical
    這個image已經內建了pecl,pecl install xdebug-2.5.5,就可以安裝xdebug了 (不帶版號則會裝最新版)。

  • 設定php.ini,並啟用xdebug

    1
    2
    3
    4
    5
    6
    cd '/usr/local/etc/php/'
    cp php.ini-development php.ini

    # 依照xdebug安裝成功後的提供的資訊在php.ini中添加設定
    echo "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so" >> php.ini
    php -v

    正確啟用後php的版本資訊中會看到with Xdebug v2.5.5的字樣了。

  • 離開container,建立新的layer,並加上tag

    1
    2
    3
    4
    # 使用剛剛操作的container-id
    docker commit ${container-id}
    # 使用剛剛commit回傳的image-id
    docker tag ${image-id} php56

建立alias指令

  • 呼叫container幫我們執行php

    1
    docker container run -it --rm php56 php -v
  • 將當前目錄掛進container執行指令

    1
    docker container run -it --rm -v $(pwd):/source -w /source php56 ls -al
  • 建立alias
    在.bashrc或.zshrc中加入設定

    1
    alias php56="docker container run -it --rm -v \$(pwd):/source -w /source php56 php"

    $(pwd)之前的\一定要記得,不然alias會在一登入時就將其解析成固定的路徑。

當我們執行php56時,實際上就是呼叫container幫我們執行php了。

推薦文章