系統(tǒng)運(yùn)維
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)站空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、甘泉網(wǎng)站維護(hù)、網(wǎng)站推廣。開(kāi)始之前為什么需要自定義一個(gè)PHP
基礎(chǔ)鏡像?
對(duì)于使用php
(python
)等開(kāi)發(fā)的項(xiàng)目,由于是解釋型語(yǔ)言并不需要編譯代碼
這個(gè)步驟(go
或者java
將依賴(lài)打包到可執(zhí)行程序或包中),但是往往還需要安裝一些依賴(lài)的庫(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è)示例來(lái)描述php
基礎(chǔ)鏡像,環(huán)境及需求如下:
項(xiàng)目基于 `php5 + MYSQL` 開(kāi)發(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)程。
Dockerfile
文件。
cat base/php/5.6/Dockerfile
# 使用 php:5.6-fpm 官方鏡像
FROM php:5.6-fpm
MAINTAINER dongnan #<@微信公眾號(hào):運(yùn)維錄>
# 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
構(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自定義鏡像? 》
docker images --format \'{{.Repository}} {{.Size}}\'
demo-base 723MB
可以使用這個(gè)php
基礎(chǔ)鏡像創(chuàng)建一個(gè)容器,不過(guò)這個(gè)容器(鏡像)雖然已經(jīng)安裝了nginx
但是并不會(huì)運(yùn)行,目前只有默認(rèn)的php-fpm
在運(yùn)行,將在下一篇: 《使用supervisor管理Docker容器中多個(gè)進(jìn)程》解決這個(gè)問(wèn)題,敬請(qǐng)期待 公眾號(hào)每周四 docker專(zhuān)題更新文章。
最后來(lái)總結(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]
當(dāng)前題目:為什么需要自定義一個(gè)基礎(chǔ)鏡像?
文章網(wǎng)址:http://www.rwnh.cn/article30/cgciso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、做網(wǎng)站、App開(kāi)發(fā)、外貿(mào)建站、用戶(hù)體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)