mac上安裝實(shí)踐docker搭建外包開發(fā)平臺(tái)

Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。他很輕巧,CPU/內(nèi)存低消耗,所也筆者選擇了docker作為虛擬化工具

1.安裝for Mac

從官網(wǎng)下載dockerDocker Toolbox,下載完成,點(diǎn)下一步下一步就安裝好了是不是很簡單。

2.構(gòu)建鏡像

docker search [name]  #查找官網(wǎng)提供的鏡像
docker pull busybox  #安裝官網(wǎng)提供的鏡像

3.構(gòu)建php開發(fā)環(huán)境

使用Dockerfile文件

# 從官方PHP鏡像構(gòu)建
FROM       php

# 將index.php復(fù)制到容器內(nèi)的/var/www目錄下
ADD        index.php /var/www/

# 對(duì)外暴露8080端口
EXPOSE     8080

# 設(shè)置容器默認(rèn)工作目錄為/var/www
WORKDIR    /var/www/

# 容器運(yùn)行后默認(rèn)執(zhí)行的指令
ENTRYPOINT ["php", "-S", "0.0.0.0:8080"]

構(gòu)建容器

docker build -t allovince/php-helloworld .

運(yùn)行這個(gè)容器

docker run -d -p 8080:8080 allovince/php-helloworld

安裝更多的服務(wù)

FROM       php
ADD        index.php /var/www/

# 安裝更多服務(wù)
RUN        apt-get install -y \
           mysql-server \
           nginx \
           php5-fpm \
           php5-mysql

# 編寫一個(gè)啟動(dòng)腳本啟動(dòng)所有服務(wù)
ENTRYPOINT ["/opt/bin/php-nginx-mysql-start.sh"]

這種安裝方式會(huì)有也下問題:

  1. 如果需要驗(yàn)證某個(gè)服務(wù)的不同版本,比如測(cè)試PHP5.3/5.4/5.5/5.6,就必須準(zhǔn)備4個(gè)鏡像,但其實(shí)每個(gè)鏡像只有很小的差異。
  2. 如果開始新的項(xiàng)目,那么容器內(nèi)安裝的服務(wù)會(huì)不斷膨脹,最終無法弄清楚哪個(gè)服務(wù)是屬于哪個(gè)項(xiàng)目的

使用單一的容器安裝方式:

FROM ubuntu:14.04
RUN  apt-get update -y && apt-get install -y nginx

FROM ubuntu:14.04
RUN  apt-get update -y && apt-get install -y mysql
這種方式的優(yōu)點(diǎn)在于所有服務(wù)可以有一個(gè)統(tǒng)一的基礎(chǔ)鏡像,對(duì)鏡像進(jìn)行擴(kuò)展和修改時(shí)可以使用同樣的方式,比如選擇了ubuntu,就可以使用apt-get指令安裝服務(wù)。

這種方式的優(yōu)點(diǎn)在于所有服務(wù)可以有一個(gè)統(tǒng)一的基礎(chǔ)鏡像,對(duì)鏡像進(jìn)行擴(kuò)展和修改時(shí)可以使用同樣的方式,比如選擇了ubuntu,就可以使用apt-get指令安裝服務(wù)。

問題在于大量的服務(wù)需要自己維護(hù),特別是有時(shí)候需要某個(gè)服務(wù)的不同版本時(shí),往往需要直接編譯源碼,調(diào)試維護(hù)成本都很高。

參考

Docker在PHP項(xiàng)目開發(fā)環(huán)境中的應(yīng)用

基于 Docker 的 PHP 開發(fā)環(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,828評(píng)論 15 147
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)???..
    sessionboy閱讀 4,001評(píng)論 2 49
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評(píng)論 19 139
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,728評(píng)論 0 120
  • 今天練了背,那就先談?wù)勱P(guān)于背部最大的一塊肌肉:背闊肌。 背闊肌,作為背部最大的一塊肌肉,直接決定了給人...
    小熊健身閱讀 756評(píng)論 0 3

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