濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > docker自定義鏡像構(gòu)建php7的方法

docker自定義鏡像構(gòu)建php7的方法

熱門(mén)標(biāo)簽:北京人工外呼系統(tǒng)廠(chǎng)家 i智能電話(huà)機(jī)器人yeta 哈爾濱400電話(huà)去哪辦理 廣東如何申請(qǐng)400電話(huà) 話(huà)術(shù)外呼系統(tǒng) 西柏坡地圖標(biāo)注 燃?xì)夤芫€(xiàn)地圖標(biāo)注顏色 400電話(huà)申請(qǐng)要什么條件 寧波400電話(huà)辦理對(duì)企業(yè)的意義

首先進(jìn)行簡(jiǎn)單的docker安裝。

要進(jìn)行自定義鏡像,我們需要選擇一個(gè)基礎(chǔ)鏡像進(jìn)行構(gòu)建自己的鏡像:其實(shí)說(shuō)白了,就是在一個(gè)有基礎(chǔ)定義好的容器內(nèi),執(zhí)行安裝各種程序的命令,生成 所謂的Dockerfile 文件,既然如此第一步我們首先需要找一個(gè)本地的鏡像作為基礎(chǔ)鏡像來(lái)操作即可:

1


如上圖所示,我們來(lái)以centos為基礎(chǔ)鏡像,來(lái)構(gòu)建一個(gè)Dockerfile

2第二步我們需要構(gòu)建一個(gè)目錄,用于存放Dockerfile文件


在root下構(gòu)建docker_demo目錄,存放 Dockerfile文件以及需要安裝的程序文件即可,因?yàn)槲乙罱≒HP的自定義環(huán)境,所以我們?cè)賮?lái)搞一個(gè)PHP7的壓縮包即可

wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror

然后改名字

現(xiàn)在PHP nginx都有了,至于COMPOSER可以在php安裝成功以后再自行操作即可~~~

接下來(lái)就是編寫(xiě)Dockerfile文件了,在此之前,簡(jiǎn)單了解下Dockerfile編寫(xiě)的關(guān)鍵字格式:

FROM 代表基于哪個(gè)鏡像

RUN 安裝軟件使用

MAINTAINER 鏡像的創(chuàng)建者

CMD 容器啟動(dòng)時(shí)執(zhí)行的命令,但是一個(gè)Dockerfile中只能有一條CMD命令,多條則只執(zhí)行最后一條CMD

ENTRYPOINT 容器啟動(dòng)時(shí)執(zhí)行的命令,但是一個(gè)Dockerfile中只能有一條CMD命令,多條則只執(zhí)行最后一條

USER 使用哪個(gè)用戶(hù)運(yùn)行container

EXPOSE 容器內(nèi)部服務(wù)暴露的端口,主機(jī)上還需要在run容器時(shí),做端口映射:

docker run -d -p 80:8080 centos6xxx

上邊命令表示把容器內(nèi)部的8080端口映射到主機(jī)80端口上

ENV 用來(lái)設(shè)置環(huán)境變量

ADD 將主機(jī)上的文件拷貝到container內(nèi)的對(duì)應(yīng)路徑,所有拷貝到容器中的文件和文件夾權(quán)限為0755,uid和gid為0,如果文件是可識(shí)別的壓縮格式,則docker會(huì)幫忙解壓縮,ADD只有在build鏡像的時(shí)候運(yùn)行一次,后面運(yùn)行container的時(shí)候不會(huì)再重新加載了。

例子如:

ADD nginx-1.12.2.tar.gz /usr/local/src

VOLUME 可以將本地文件夾或者其他容器的文件夾掛在到容器內(nèi)。

WORKDIR 切換目錄使用,(相當(dāng)于cd目錄)

ONBUILD 指定的命令在構(gòu)建鏡像時(shí)不執(zhí)行,而是在它的子鏡像中執(zhí)行。

學(xué)完了Dockerfile基礎(chǔ)命令,我們來(lái)試著搞一搞這個(gè)環(huán)境.

docker pull centos

首先下載一個(gè)基礎(chǔ)鏡像,如果有這一步請(qǐng)忽略,下面是我的Dockerfile

# base image
# 基礎(chǔ)鏡像
FROM docker.io/centos

# MAINTAINER編寫(xiě)者
MAINTAINER xy61521@163.com

# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx 來(lái)吧nginx 和PHP提前都放進(jìn)基礎(chǔ)鏡像的/usr/local/src目錄下,方便編譯安裝
ADD nginx-1.12.2.tar.gz /usr/local/src
ADD php-7.0.0.tar.gz /usr/local/src

# running required command 安裝Nginx的一系列亂七八糟的依賴(lài)包
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx

# change dir to /usr/local/src/nginx-1.12.2
WORKDIR /usr/local/src/nginx-1.12.2

# execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

#先裝個(gè)本地Mysql
RUN yum install -y wget
RUN wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
RUN rpm -ivh mysql57-community-release-el7-8.noarch.rpm
RUN yum install -y mysql-server


#截止此,開(kāi)始安裝php,宇宙慣例,開(kāi)始安裝一些編譯的依賴(lài)包
RUN yum -y install epel-release
RUN yum -y install libmcrypt-devel
RUN yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel
WORKDIR /usr/local/src/php-7.0.0
#編譯 安裝
RUN ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache && make && make install

RUN cp php.ini-production /usr/local/php7/etc/php.ini

構(gòu)建成功Dockerfile文件之后,docker build進(jìn)行構(gòu)建

docker build -t centos_lnmp:v1 .

后邊的.代表相對(duì)路徑當(dāng)前目錄,也可使用絕對(duì)路徑

然后就是漫長(zhǎng)的等待

直到構(gòu)建成功鏡像,至此我們重新開(kāi)始

docker images


我們看到該鏡像已經(jīng)構(gòu)建成功(有一點(diǎn)幾率構(gòu)建失敗,失敗的話(huà)刪除容器和鏡像重新構(gòu)建即可),然后運(yùn)行

docker run -dt -p 80:80 centos_lnmp:v1

成功后則可進(jìn)入容器,配置nginx php 。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:西藏 襄陽(yáng) 開(kāi)封 阜陽(yáng) 珠海 巴中 湘潭 張家口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《docker自定義鏡像構(gòu)建php7的方法》,本文關(guān)鍵詞  docker,自定義,鏡像,構(gòu)建,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《docker自定義鏡像構(gòu)建php7的方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于docker自定義鏡像構(gòu)建php7的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    广河县| 泸西县| 延吉市| 沙洋县| 顺平县| 彝良县| 香港 | 莆田市| 太谷县| 遂宁市| 南通市| 阳原县| 滕州市| 静宁县| 鄂尔多斯市| 江孜县| 海淀区| 时尚| 天镇县| 鸡东县| 乐都县| 同德县| 红原县| 汤阴县| 太原市| 兴文县| 武安市| 尼玛县| 巴林左旗| 吐鲁番市| 九龙城区| 依安县| 金塔县| 卫辉市| 永清县| 杭锦后旗| 贵州省| 巩留县| 新晃| 衡南县| 怀远县|