前言
在Jenkins持續(xù)集成環(huán)境中構(gòu)建工程時役电,經(jīng)常需要用到諸如PHP格了、Nodejs等環(huán)境,如果每增加一個依賴環(huán)境挤巡,就重構(gòu)一次Jenkins剩彬,那么顯然工作量會非常大,且違背了使用Docker的初衷矿卑。所以特地研究并記錄了一下如何使用包含了所需環(huán)境的Docker鏡像來提供命令行的訪問方式喉恋,這里以PHP為例。
基本原理
將工作目錄以volume的方式掛載到php容器內(nèi),再在容器內(nèi)運行指定的腳本轻黑,腳本執(zhí)行完成后糊肤,容器的生命周期也同時結(jié)束,并回收相關(guān)資源氓鄙。
Code
直接用運行:
docker run -it --rm --name php -v $PWD:/usr/src/myapp -w /usr/src/myapp php:cli php
將需要運行的參數(shù)追加到該命令后面即可馆揉。需要注意的是,這里默認會把當前工作目錄作為工作環(huán)境抖拦,如需要運行/var/script.php
文件時升酣,則應(yīng)該先cd /var
后在該目錄內(nèi)運行上述命令(追加script.php于命令后面)
顯然這樣的一個方式不夠優(yōu)雅,每次都需要輸入一大長串态罪,這里有兩個解決方案:
1. Alias
為該命令起一個別名噩茄,如:
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 "$@"
}
通過這兩種方式都可以隨時在主機上面使用docker_php命令來執(zhí)行一些php相關(guān)操作。但是這種方式只是提供了一個運行php文件的環(huán)境還是存在不少弊端的复颈。