日韩精品成人无码专区免费-国产99久久久久久免费看-国产精品丝袜久久久久久不卡-国产精品无码一区二区三区

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

發(fā)布時(shí)間:2025-11-11 點(diǎn)擊:16
系統(tǒng)運(yùn)維
開始之前
為什么需要自定義一個(gè)php基礎(chǔ)鏡像?
對(duì)于使用php (python)等開發(fā)的項(xiàng)目,由于是解釋型語(yǔ)言并不需要編譯代碼這個(gè)步驟(go或者java將依賴打包到可執(zhí)行程序或包中),但是往往還需要安裝一些依賴的庫(kù)或者第三方模塊。
在項(xiàng)目實(shí)踐中一般會(huì)先在php官方鏡像之上,添加項(xiàng)目一些必用擴(kuò)展模塊,例如連接 mysql數(shù)據(jù)庫(kù)的 mysqlnd 模塊,或者連接 redis、memcache、mongodb 等常用的php擴(kuò)展模塊,以項(xiàng)目實(shí)際需求為準(zhǔn)。
基礎(chǔ)鏡像作用是為項(xiàng)目鏡像提供支持,準(zhǔn)備好php基礎(chǔ)鏡像之后,以此鏡像為基礎(chǔ)并添加項(xiàng)目代碼,完成項(xiàng)目鏡像構(gòu)建工作,除重大安全更新、添加新的擴(kuò)展模塊之外,基礎(chǔ)鏡像并不會(huì)經(jīng)常更新和調(diào)整。
舉個(gè)栗子
這里使用一個(gè)示例來描述php基礎(chǔ)鏡像,環(huán)境及需求如下:
項(xiàng)目基于 `php5 mysql` 開發(fā)。項(xiàng)目使用 `php-fpm` 運(yùn)行項(xiàng)目代碼。項(xiàng)目使用 `nginx` 反向代理 php-fpm 并提供\\\'靜態(tài)資源\\\'服務(wù)。項(xiàng)目需要 `mysqlnd、redis、memcache` 等php擴(kuò)展模塊。默認(rèn)情況下 docker 只運(yùn)行一個(gè)進(jìn)程(docker推崇的理念),但是項(xiàng)目需要兩個(gè)服務(wù)(php-fpm、nginx),所以需要第三方的進(jìn)程管理軟件,在docker中較流行的方案是使用 supervisor 軟件管理多個(gè)進(jìn)程。
這篇文章重點(diǎn)介紹如何實(shí)現(xiàn)一個(gè)php基礎(chǔ)鏡像,將在下一篇文章中介紹 如何使用 supervisor 管理多個(gè)進(jìn)程。
操作步驟
基于以上的需求,設(shè)計(jì) dockerfile 文件。
cat base/php/5.6/dockerfile# 使用 php:5.6-fpm 官方鏡像from php:5.6-fpmmaintainer dongnan #<@微信公眾號(hào):運(yùn)維錄># envenv tz=asia/shanghai \\\\ lang=en_us.utf-8# aptcopy conf/sources.list /etc/apt/sources.listrun 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/*# extrun docker-php-ext-install bcmath \\\\ dba \\\\ exif \\\\ mysqli \\\\ pdo_mysql \\\\ sysvsem \\\\ sysvshm \\\\ bz2 \\\\ zip \\\\ mysql# gdrun 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 # peclrun 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構(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 命令使用方法,請(qǐng)參考這篇文章《如何使用 dockerfile自定義鏡像? 》
驗(yàn)證鏡像
docker images --format \\\'{{.repository}} {{.size}}\\\'demo-base 723mb可以使用這個(gè)php基礎(chǔ)鏡像創(chuàng)建一個(gè)容器,不過這個(gè)容器(鏡像)雖然已經(jīng)安裝了nginx 但是并不會(huì)運(yùn)行,目前只有默認(rèn)的php-fpm在運(yùn)行,將在下一篇: 《使用supervisor管理docker容器中多個(gè)進(jìn)程》解決這個(gè)問題,敬請(qǐng)期待 公眾號(hào)每周四 docker專題更新文章。
小結(jié)
最后來總結(jié)下文章中的知識(shí)點(diǎn)
基礎(chǔ)鏡像作用是為項(xiàng)目鏡像提供支持,并在基礎(chǔ)鏡像之上添加項(xiàng)目代碼,完成項(xiàng)目鏡像構(gòu)建工作。
除重大安全更新、添加新的擴(kuò)展模塊之外,基礎(chǔ)鏡像不會(huì)經(jīng)常更新。
默認(rèn)情況下 docker只運(yùn)行一個(gè)進(jìn)程,需要supervisor進(jìn)程管理軟件管理多個(gè)進(jìn)程。
參考文章
doker&k8s qun [703906133]

浮夸炫技已成風(fēng) 手機(jī)圈營(yíng)銷炒作都是通病
輕量云服務(wù)器哪個(gè)好用一點(diǎn)
企業(yè)應(yīng)用的虛擬主機(jī)要多少錢
網(wǎng)站經(jīng)常性打開錯(cuò)誤空間倆三天可以打開倆三天又打不開
企業(yè)郵箱被限制發(fā)件怎么解決
域名一般選哪個(gè)?域名是怎樣挑選的?
這是怎么回事這個(gè)域名是在西維數(shù)碼備過案嗎
1號(hào)升級(jí)問題-云服務(wù)器問題