docker靈活的搭建php環(huán)境 安裝php擴展 docker-compose自動化構(gòu)建

項目地址https://github.com/ydtg1993/server?更全面的文獻解釋

使用docker搭建靈活的線上php環(huán)境 有時候不太需要一些別人已經(jīng)集成了的包或者鏡像 我們就可以使用以下方式逐一構(gòu)建自己所需要的環(huán)境結(jié)構(gòu)

(一階)使用docker逐一構(gòu)建

1.git拉取server項目 放到服務(wù)器根目錄?(到后面你也可以構(gòu)建自己風(fēng)格的環(huán)境結(jié)構(gòu))

2.下載鏡像

sudo docker pull php:7.2-fpm????????冒號后選擇版本

sudo docker pull nginx

sudo docker pull mysql:8.0????????不需要本地數(shù)據(jù)庫可忽略

sudo docker pull redis:3.2????????不需要本地redis可忽略

sudo docker images? 查看已下載的所有鏡像

3.下載完成鏡像后運行容器? [以下采用--link方式創(chuàng)建容器 注意創(chuàng)建順序]

[運行mysql容器]

sudo docker run --name mydb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0

? ? 注:-MYSQL_ROOT_PASSWORD=123456 給mysql設(shè)置初始密碼??如果不需要搭建本地數(shù)據(jù)庫直接下一步

[運行redis容器]

sudo docker run --name myredis -p 6379:6379 -d redis:3.2

? ? 注:如果不需要搭建本地redis直接下一步

[運行php容器]

sudo docker run -d -p 9000:9000 --name myphp -v /server/www:/var/www/html -v /server/php:/usr/local/etc/php --link mydb:mydb --link myredis:myredis --privileged=true? php:7.2-fpm

? ? 注:如果不需要搭建本地數(shù)據(jù)庫或者redis可以省去--link mydb:mydb --link myredis:myredis

[運行nginx容器]

sudo docker run --name mynginx -d -p 80:80 -v /server/www:/usr/share/nginx/html -v /server/nginx:/etc/nginx -v /server/logs/nginx.logs:/var/log/nginx --link myphp:myphp --privileged=true? nginx

注:-v語句冒號后是容器內(nèi)的路徑 我將nginx的網(wǎng)頁項目目錄 配置目錄 日志目錄分別掛載到了我事先準備好的/server目錄下? ? ? ? ? ? ? --link myphp:myphp 將nginx容器和php容器連接 通過別名myphp就不再需要去指定myphp容器的ip了

sudo docker ps? -a????????查看所有容器 確定都運行成功環(huán)境基本就完成了? ?

掛載目錄后就可以不用進入容器中修改配置慢叨,直接在對應(yīng)掛載目錄下改配置文件 修改nginx配置在 /server/nginx/conf.d/Default.conf

4.PHP擴展庫安裝

進入容器

sudo docker exec -ti myphp? /bin/bash

docker-php-ext-install pdo pdo_mysql????????安裝pdo_mysql擴展

docker-php-ext-install? redis

[此時報錯提示redis.so 因為一些擴展并不包含在 PHP 源碼文件中]

方法一:

tar zxvf /server/php_lib/redis-4.1.0.tgz? ? ? ? 解壓已經(jīng)下載好的redis擴展包

sudo docker cp /server/php_lib/redis-4.1.0 myphp:/usr/src/php/ext/redis? ? ? ? 放到容器中

? ? 注:直接將擴展包放到容器ext目錄里可能會報錯Error: No such container:path: myphp:/usr/src/php/ext

你可以多開一個服務(wù)器窗口 進入php容器中執(zhí)行docker-php-ext-install? redis此時報錯error: /usr/src/php/ext/redis does not exist

然后在你的第一個窗口執(zhí)行上條命令就成功了

方法二:

pecl install redis && docker-php-ext-enable redis????????用 pecl install 安裝擴展

docker restart myphp? 退出容器后重啟php容器

### 其它命令

docker stop $(docker ps -q)? 停止所有容器

docker rm $(docker ps -aq)? 刪除所有容器

docker inspect myphp? 查看容器配置信息



(二階)docker-compose自動化構(gòu)建

? ? 完成以上步驟你就已經(jīng)初步了解了docker的基本容器操作

? ? docker-compose是編排容器的。例如颊艳,你有一個php鏡像惰帽,一個mysql鏡像锡宋,一個nginx鏡像萎战。如果沒有docker-compose,那么每次啟動的時候揉阎,你需要敲各個容器的啟動參數(shù)庄撮,環(huán)境變量,容器命名余黎,指定不同容器的鏈接參數(shù)等等一系列的操作重窟,相當繁瑣。而用了docker-composer之后惧财,你就可以把這些命令一次性寫在docker-composer.yml文件中巡扇,以后每次啟動這一整個環(huán)境(含4個容器)的時候,你只要敲一個docker-composer up命令就ok了

1.安裝docker-compose

curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version

2.一鍵部署環(huán)境

? ? /server/compose/docker-compose.yml已經(jīng)配置好了 直接輸入命令

? ? cd /server/compose

? ? docker-compose up -d

????對比上面運行容器命令來看docker_yml的配置結(jié)構(gòu)就一目了然了



?(三階)dokcer-compose和dockerfile 完整構(gòu)建

? ? 用了docker-compose實現(xiàn)一鍵式操作 但問題是PHP的擴展庫還是得自己單獨裝 所以這里需要用到Dockerfile來構(gòu)建自定義容器鏡像

? ? 實現(xiàn)真正的一鍵完成

? ? cd /server/compose.dockerfiles

? ? docker-compose up -d

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垮衷,一起剝皮案震驚了整個濱河市厅翔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搀突,老刑警劉巖刀闷,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仰迁,居然都是意外死亡甸昏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門徐许,熙熙樓的掌柜王于貴愁眉苦臉地迎上來施蜜,“玉大人,你說我怎么就攤上這事雌隅》” “怎么了缸沃?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長修械。 經(jīng)常有香客問我趾牧,道長,這世上最難降的妖魔是什么肯污? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任翘单,我火速辦了婚禮,結(jié)果婚禮上仇箱,老公的妹妹穿的比我還像新娘县恕。我一直安慰自己,他們只是感情好剂桥,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布忠烛。 她就那樣靜靜地躺著,像睡著了一般权逗。 火紅的嫁衣襯著肌膚如雪美尸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天斟薇,我揣著相機與錄音师坎,去河邊找鬼。 笑死堪滨,一個胖子當著我的面吹牛胯陋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袱箱,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼遏乔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了发笔?” 一聲冷哼從身側(cè)響起盟萨,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎了讨,沒想到半個月后捻激,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡前计,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年胞谭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片男杈。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡韭赘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出势就,到底是詐尸還是另有隱情泉瞻,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布苞冯,位于F島的核電站袖牙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏舅锄。R本人自食惡果不足惜鞭达,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望皇忿。 院中可真熱鬧畴蹭,春花似錦、人聲如沸鳍烁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幔荒。三九已至糊闽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爹梁,已是汗流浹背右犹。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姚垃,地道東北人念链。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像积糯,于是被迫代替她去往敵國和親掂墓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345