為什么需要自定義一個PHP
基礎(chǔ)鏡像?
對于使用php
(python
)等開發(fā)的項目,由于是解釋型語言并不需要編譯代碼
這個步驟(go
或者java
將依賴打包到可執(zhí)行程序或包中),但是往往還需要安裝一些依賴的庫或者第三方模塊。
在項目實踐中一般會先在PHP
官方鏡像之上,添加項目一些必用擴展模塊,例如連接 mysql
數(shù)據(jù)庫的 mysqlnd
模塊,或者連接 redis
、memcache
、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
管理多個進程。
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
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自定義鏡像? 》
docker images --format '{{.Repository}} {{.Size}}'
demo-base 723MB
可以使用這個php
基礎(chǔ)鏡像創(chuàng)建一個容器,不過這個容器(鏡像)雖然已經(jīng)安裝了nginx
但是并不會運行,目前只有默認的php-fpm
在運行,將在下一篇: 《使用supervisor管理Docker容器中多個進程》解決這個問題,敬請期待 公眾號每周四 docker專題更新文章。
最后來總結(jié)下文章中的知識點
項目鏡像
提供支持,并在基礎(chǔ)鏡像之上添加項目代碼,完成項目鏡像構(gòu)建工作。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)
猜你還喜歡下面的內(nèi)容