真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境-創(chuàng)新互聯(lián)

1 背景介紹

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、密云網(wǎng)絡(luò)推廣、成都小程序開發(fā)、密云網(wǎng)絡(luò)營銷、密云企業(yè)策劃、密云品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供密云建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

為了方便開發(fā)人員對(duì)自己的應(yīng)用代碼進(jìn)行鏡像封裝,需要提供一個(gè)中間件基礎(chǔ)鏡像讓他們直接在上面封裝應(yīng)用鏡像,然后在docker編譯服務(wù)器上面按鏡像打包流程了封裝鏡像,采用流水式的方式完成所有操作。

今天給大家介紹一下如何將傳統(tǒng)nginx+php-fpm組合中間件軟件在docker上面將其封裝成中間件鏡像,然后由讓開發(fā)將其php應(yīng)用代碼部署到中間件容器上面運(yùn)行起來。

2 鏡像封裝流程

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

  • 基礎(chǔ)鏡像:在構(gòu)建中間件鏡像前,需要準(zhǔn)備一個(gè)干凈的centos7鏡像,方便在基礎(chǔ)鏡像上面安裝中間件nginx和php-fpm等軟件。

  • 構(gòu)建中間件鏡像:在構(gòu)建應(yīng)用鏡像前,提前構(gòu)建好中間件鏡像,然而中間件鏡像是基于centos基礎(chǔ)鏡像上面去安裝nginx和php-fpm中間件軟件,對(duì)其中間件性能參數(shù)優(yōu)化配置,并定義中間件運(yùn)行環(huán)境啟動(dòng)腳本,最后通過命令封裝成中間件鏡像。

  • 構(gòu)建應(yīng)用鏡像:以中間件鏡像做為基礎(chǔ)鏡像,編寫dockerfile腳本在發(fā)布php代碼和更新nginx配置,最后通過命令將其封裝成應(yīng)用鏡像。

  • 啟動(dòng)應(yīng)用容器:使用docker run命令將應(yīng)用鏡像啟動(dòng)。

3 鏡像封裝過程

3.1 環(huán)境準(zhǔn)備

ü   鏡像列表

鏡像名

鏡像說明

鏡像來源

Centos:latest

Centos7操作系統(tǒng)鏡像

公網(wǎng)下載

nginx-phpfpm70:v1.0

安裝好了nginx和php中間件鏡像

離線構(gòu)建

acitivty_admin:v1.0

基于中間件鏡像上面部署應(yīng)用生成新的應(yīng)用鏡像

離線構(gòu)建

ü   編譯環(huán)境

       1、 準(zhǔn)備一臺(tái)kernel 3.10以上版本的linux主機(jī) 。

       2、 需要在主機(jī)上面安裝docker 1.13.1軟件。

       3、 主機(jī)需要能上外網(wǎng)方便外網(wǎng)鏡像下載和軟件包下載 。

3.2    下載centos基礎(chǔ)鏡像

下面直接在編譯主機(jī)上面用docker search centos命令查看外網(wǎng)鏡像。下載星最多的centos鏡像,然后用docker pull centos直接下載,最后會(huì)將鏡像下載到本地。

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

3.3   構(gòu)建中間件鏡像

前面我們已經(jīng)將centos7的鏡像文件下載下來,現(xiàn)在構(gòu)建中間件鏡像可以直接在基于centos鏡像上面安裝nginx和php-fpm軟件,最后在通過docker命令生成一個(gè)新的中間件鏡像。

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

  • 以下是準(zhǔn)備好的中間件構(gòu)建鏡像的dockerfile腳本:

# 一個(gè)干凈的centos鏡像

FROM centos: latest

# 鏡像創(chuàng)建者

MAINTAINER jaymarco@shsnc.com

# 在centos鏡像中配置php的yum源,然后安裝php相關(guān)依賴包、php-fpm軟件、php對(duì)應(yīng)的擴(kuò)展包

RUN rpm -ivh   http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm   && rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm   && \

yum install -y php70-php-gd.x86_64 php70-php-mcrypt.x86_64   php70-php-fpm.x86_64 php70-php-pecl-redis.x86_64 python-setuptools  \

php70-php-mbstring.x86_64 php70-php-snmp.x86_64   php70-php-pecl-zip.x86_64     \

php70-php-mysqlnd.x86_64 php70-php-pecl-mysql.x86_64 gcc  gcc-c++    automake   libtool  make    cmake openssl openssl-devel pcre-devel &&\

yum clean all

# 在centos鏡像中安裝nginx軟件

RUN rpm -ivh   http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.3-1.el7.ngx.x86_64.rpm

#php 性能參數(shù)優(yōu)化配置

RUN sed -e 's/127.0.0.1:9000/9000/' -e '/allowed_clients/d' -e   '/catch_workers_output/s/^;//' -e '/error_log/d' -i  /etc/opt/remi/php70/php-fpm.d/www.conf   &&\

sed -e 's/daemonize = yes/daemonize = no/' -i   /etc/opt/remi/php70/php-fpm.conf

# 配置鏡像時(shí)區(qū)文件,方便鏡像啟動(dòng)成容器后時(shí)區(qū)與本地主機(jī)一致

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   &&\

echo 'Asia/Shanghai' >/etc/timezone

# 安裝supervisor后臺(tái)進(jìn)程管理工具,方便容器啟動(dòng)多進(jìn)程進(jìn)行后臺(tái)監(jiān)控管理。

#Install supervisor

RUN easy_install supervisor && \

    mkdir -p   /var/log/supervisor && \

    mkdir -p /var/run/sshd   && \

    mkdir -p   /var/run/supervisord

# 將本地修改好的supervisord配置文件COPY到鏡像中

ADD supervisord.conf /etc/supervisord.conf

# 將編寫好的腳本從本地COPY到鏡像中

ADD startserv.sh /startserv.sh

RUN chmod +x /startserv.sh

# 將容器中的80,9000端口映射成宿主機(jī)器中的某個(gè)端口

EXPOSE 80 9000

# 容器啟動(dòng)時(shí)啟動(dòng)nginx和php服務(wù)

CMD ["/startserv.sh"]

  • 配置文件supervisord.conf,下面標(biāo)紅部分屬于服務(wù)啟動(dòng)配置。

[unix_http_server]

file=/tmp/supervisor.sock   ; (the path to the socket file)

[supervisord]

logfile=/tmp/supervisord.log   ; (main log file;default $CWD/supervisord.log)

logfile_maxbytes=50MB   ; (max main logfile bytes b4 rotation;default 50MB)

logfile_backups=10   ; (num of main logfile rotation backups;default 10)

loglevel=info   ; (log level;default info; others: debug,warn,trace)

pidfile=/tmp/supervisord.pid   ; (supervisord pidfile;default supervisord.pid)

nodaemon=true   ; (start in foreground if true;default false)

minfds=1024   ; (min. avail startup file descriptors;default 1024)

minprocs=200   ; (min. avail process descriptors;default 200)

user=root       ;

;   the below section must remain in the config file for RPC

;   (supervisorctl/web interface) to work, additional interfaces may be

;   added by defining them in separate rpcinterface: sections

[rpcinterface:supervisor]

supervisor.rpcinterface_factory   = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock   ; use a unix:// URL for a unix socket

[program:php-fpm]

command=/opt/remi/php70/root/usr/sbin/php-fpm   -F

[program:nginx]

command=/usr/sbin/nginx -c   /etc/nginx/nginx.conf

服務(wù)啟動(dòng)腳本 startserv.sh

#!/bin/sh

/usr/bin/supervisord   -n -c /etc/supervisord.conf

前面已經(jīng)將dockerfile腳本和配置文件準(zhǔn)備就緒后,接下來直接可以使用docker構(gòu)建命令來構(gòu)建一個(gè)新的中間件鏡像。最后也會(huì)在本地生成一個(gè)nginx-phpfpm:v1.0鏡像。

構(gòu)建命令:

docker build –t nginx-phpfpm:v1.0 .

構(gòu)建過程:

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

3.4   構(gòu)建應(yīng)用鏡像

部署應(yīng)用鏡像需要準(zhǔn)備兩份東西一份是php應(yīng)用代碼,另一份是nginx配置文件。并將這兩份東西打包到中間件鏡像文件中,最后會(huì)構(gòu)建一個(gè)新的應(yīng)用鏡像。

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

  • Nginx 配置參數(shù)

server {

    listen       8080;

    server_name  127.0.0.1;

        large_client_header_buffers 4 16k;

        client_max_body_size 300m;

        client_body_buffer_size 128k;

        proxy_connect_timeout 600;

        proxy_read_timeout 600;

        proxy_send_timeout 600;

        proxy_buffer_size 64k;

        proxy_buffers   32 32k;

        proxy_busy_buffers_size 64k;

        proxy_temp_file_write_size 64k;

    location / {

        root     /var/www/cecrm_acitivtycenter;

        index    index.php;

        try_files $uri $uri/   /index.php?$uri&$args;

    }

        location ~ ^.+.php {

            include        fastcgi_params;

            root           /var/www/cecrm_acitivtycenter;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_split_path_info   ^((?U).+.php)(/?.+)$;

            fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;

            fastcgi_param PATH_INFO   $fastcgi_path_info;

            fastcgi_param PATH_TRANSLATED   $document_root$fastcgi_path_info;

            fastcgi_intercept_errors on;

            fastcgi_connect_timeout 600;

            fastcgi_send_timeout 1800;

            fastcgi_read_timeout 6000;

            fastcgi_buffer_size 128k;

            fastcgi_buffers 4 256k;

            fastcgi_busy_buffers_size 256k;

            fastcgi_temp_file_write_size   256k;

        }

}

  • php 應(yīng)用程序構(gòu)建dockerfile腳本

# 引用中間件鏡像做為應(yīng)用構(gòu)建基礎(chǔ)鏡像

FROM nginx-phpfpm70:v1.0

MAINTAINER jaymarco@shsnc.com

# 發(fā)布 php 程序代碼

ADD admin   /var/www/cecrm_acitivtycenter/admin

#nginx 性能參數(shù)優(yōu)化

ADD admindocker.conf   /etc/nginx/conf.d/admindocker.conf

前面已經(jīng)將dockerfile腳本和配置文件準(zhǔn)備就緒后,接下來直接可以使用docker構(gòu)建命令來構(gòu)建一個(gè)新的應(yīng)用鏡像。最后也會(huì)在本地生成一個(gè)acitivty_admin:v1.0鏡像。

 構(gòu)建命令:

docker  build -t acitivty_admin:v1.0 .

構(gòu)建過程:

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

我們可以看到應(yīng)用鏡像已經(jīng)構(gòu)建成功

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

3.5   容器啟動(dòng)與驗(yàn)證

啟動(dòng)應(yīng)用容器

docker run -itd --name acitivty_admin -p 8090:8090  acitivty_admin:v1.0

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

查看容器中啟動(dòng)的進(jìn)程,發(fā)現(xiàn)nginx和php-fpm進(jìn)程已經(jīng)成功啟動(dòng)

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境

最后我們驗(yàn)證一下發(fā)布后的應(yīng)用能正常訪問

基于docker構(gòu)建中間件容器應(yīng)用環(huán)境


分享題目:基于docker構(gòu)建中間件容器應(yīng)用環(huán)境-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://weahome.cn/article/depojs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部