基于Docker的PHP命令行界面(CLI)

前言

Jenkins持續(xù)集成環(huán)境中構(gòu)建工程時(shí),經(jīng)常需要用到諸如PHP、Nodejs等環(huán)境,如果每增加一個(gè)依賴環(huán)境,就重構(gòu)一次Jenkins,那么顯然工作量會(huì)非常大,且違背了使用Docker的初衷。所以特地研究并記錄了一下如何使用包含了所需環(huán)境的Docker鏡像來(lái)提供命令行的訪問(wèn)方式,這里以PHP為例。

基本原理

將工作目錄以volume的方式掛載到php容器內(nèi),再在容器內(nèi)運(yùn)行指定的腳本,腳本執(zhí)行完成后,容器的生命周期也同時(shí)結(jié)束,并回收相關(guān)資源。

Code

直接用運(yùn)行:

docker run -it --rm --name php -v $PWD:/usr/src/myapp -w /usr/src/myapp php:cli php

將需要運(yùn)行的參數(shù)追加到該命令后面即可。需要注意的是,這里默認(rèn)會(huì)把當(dāng)前工作目錄作為工作環(huán)境,如需要運(yùn)行/var/script.php文件時(shí),則應(yīng)該先cd /var后在該目錄內(nèi)運(yùn)行上述命令(追加script.php于命令后面)
顯然這樣的一個(gè)方式不夠優(yōu)雅,每次都需要輸入一大長(zhǎng)串,這里有兩個(gè)解決方案:

1. Alias

為該命令起一個(gè)別名,如:

alias docker_php='docker run -it --rm --name php -v $PWD:/usr/src/myapp -w /usr/src/myapp php:cli php' 

2. Shell 函數(shù)

在你的~/.bashrc,~/.zshrc或者其他類似的文件中定義如下函數(shù):

docker_php () {
    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --volume $PWD:/usr/src/myapp \
        --workdir /usr/src/myapp \
        php:cli php "$@"
}

通過(guò)這兩種方式都可以隨時(shí)在主機(jī)上面使用docker_php命令來(lái)執(zhí)行一些php相關(guān)操作。但是這種方式只是提供了一個(gè)運(yùn)行php文件的環(huán)境還是存在不少弊端的。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容