為什么需要自定義一個基礎(chǔ)鏡像?-創(chuàng)新互聯(lián)

為什么需要自定義一個基礎(chǔ)鏡像?

成都創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元招遠做網(wǎng)站,已為上家服務(wù),為招遠各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
開始之前

為什么需要自定義一個PHP基礎(chǔ)鏡像?

對于使用php (python)等開發(fā)的項目,由于是解釋型語言并不需要編譯代碼這個步驟(go或者java將依賴打包到可執(zhí)行程序或包中),但是往往還需要安裝一些依賴的庫或者第三方模塊。

在項目實踐中一般會先在PHP官方鏡像之上,添加項目一些必用擴展模塊,例如連接 mysql數(shù)據(jù)庫的 mysqlnd 模塊,或者連接 redismemcache、mongodb 等常用的php擴展模塊,以項目實際需求為準。

基礎(chǔ)鏡像作用是為項目鏡像提供支持,準備好php基礎(chǔ)鏡像之后,以此鏡像為基礎(chǔ)并添加項目代碼,完成項目鏡像構(gòu)建工作,除重大安全更新、添加新的擴展模塊之外,基礎(chǔ)鏡像并不會經(jīng)常更新和調(diào)整。

舉個栗子

這里使用一個示例來描述php基礎(chǔ)鏡像,環(huán)境及需求如下:

項目基于 `php5 + mysql` 開發(fā)。
項目使用 `php-fpm` 運行項目代碼。
項目使用 `nginx` 反向代理 php-fpm 并提供'靜態(tài)資源'服務(wù)。
項目需要 `mysqlnd、redis、memcache` 等php擴展模塊。

默認情況下 docker 只運行一個進程(docker推崇的理念),但是項目需要兩個服務(wù)(php-fpm、nginx),所以需要第三方的進程管理軟件,在docker中較流行的方案是使用 supervisor 軟件管理多個進程。

這篇文章重點介紹如何實現(xiàn)一個php基礎(chǔ)鏡像,將在下一篇文章中介紹 如何使用 supervisor 管理多個進程。

操作步驟
  1. 基于以上的需求,設(shè)計 Dockerfile 文件。
cat base/php/5.6/Dockerfile

# 使用 php:5.6-fpm 官方鏡像
FROM php:5.6-fpm
MAINTAINER dongnan #<@微信公眾號:運維錄>

# env
ENV TZ="Asia/Shanghai" \
    LANG="en_US.UTF-8"

# apt
COPY conf/sources.list /etc/apt/sources.list
RUN apt-get update && apt-get install -y \
    supervisor nginx \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng-dev \
    libmagickwand-dev \
    libmemcached-dev \
    bzip2 \
    && apt-get clean && rm -r /var/lib/apt/lists/*

# ext
RUN docker-php-ext-install bcmath \
    dba \
    exif \
    mysqli \
    pdo_mysql \
    sysvsem \
    sysvshm \
    bz2 \
    zip \
    mysql

# gd
RUN docker-php-ext-install -j$(nproc) iconv mcrypt \
    && docker-php-ext-configure gd \
    --with-freetype-dir=/usr/include/ \
    --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd 

# pecl
RUN pecl install imagick \
    memcached-2.2.0 \
    redis-4.3.0 \
    && docker-php-ext-enable imagick \
    && docker-php-ext-enable memcached \ 
    && docker-php-ext-enable redis
  1. 構(gòu)建鏡像
cd base/php/5.6/
docker build -t demo-base:0.0.1 .

Sending build context to Docker daemon 3.0 kb
# 省略....
Successfully built cd34135ed904

不明白Dockerfile 文件參數(shù)含義,或者 build 命令使用方法,請參考這篇文章《如何使用 Dockerfile自定義鏡像? 》

  1. 驗證鏡像
docker images --format '{{.Repository}} {{.Size}}'

demo-base 723MB

可以使用這個php基礎(chǔ)鏡像創(chuàng)建一個容器,不過這個容器(鏡像)雖然已經(jīng)安裝了nginx 但是并不會運行,目前只有默認的php-fpm在運行,將在下一篇: 《使用supervisor管理Docker容器中多個進程》解決這個問題,敬請期待 公眾號每周四 docker專題更新文章。

小結(jié)

最后來總結(jié)下文章中的知識點

  • 基礎(chǔ)鏡像作用是為項目鏡像提供支持,并在基礎(chǔ)鏡像之上添加項目代碼,完成項目鏡像構(gòu)建工作。
  • 除重大安全更新、添加新的擴展模塊之外,基礎(chǔ)鏡像不會經(jīng)常更新。
  • 默認情況下 docker只運行一個進程,需要supervisor進程管理軟件管理多個進程。

參考文章

doker&k8s Qun [703906133]

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞標題:為什么需要自定義一個基礎(chǔ)鏡像?-創(chuàng)新互聯(lián)
本文路徑:http://muchs.cn/article22/cdsgcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站Google、建站公司、網(wǎng)頁設(shè)計公司App開發(fā)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)