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

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

Docker搭建disconf環(huán)境的過程

這篇文章主要講解了“Docker搭建disconf環(huán)境的過程”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Docker搭建disconf環(huán)境的過程”吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),吐魯番企業(yè)網(wǎng)站建設(shè),吐魯番品牌網(wǎng)站建設(shè),網(wǎng)站定制,吐魯番網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,吐魯番網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

細說搭建過程

在前兩章中,我們利用遠程或本地的鏡像,快速體驗了本地啟動disconf的過程,本章我們一起來分析和梳理整個定制和搭建過程,了解這些后,我們就能根據(jù)自己的需要來定制本地的disconf環(huán)境了。

以下兩點請注意

  1. 本機環(huán)境已經(jīng)安裝了maven,并且把maven的bin目錄配置到環(huán)境變量PATH下;

  2. 編譯編譯disconf源碼時,要用到官方shell腳本,所以本次實踐的操作系統(tǒng)建議用linux或mac,如果用windows,有三種方法:一個是把shell改成bat腳本,一個是用虛擬機的linux,還有一種是用在docker上搭建一個maven容器,把disconf源碼放在這個容器下編譯;

先分析再實戰(zhàn)

首先把disconf環(huán)境依賴的所有server都列出來:

  1. redis<無需定制,用官方鏡像>

  2. zookeeper<無需定制,用官方鏡像>

  3. MySQL<定制,創(chuàng)建庫,表,導(dǎo)入初始化數(shù)據(jù)>

  4. tomcat<定制,包含業(yè)務(wù)war包,路徑配置>

  5. nginx<定制,配置動靜分離,包含靜態(tài)web資源>

下一步,是理清各個server之間的依賴關(guān)系(例如tomcat上的業(yè)務(wù)要連接mysql數(shù)據(jù)庫),依賴關(guān)系如下,搞清楚了這個就知道link參數(shù)怎么寫了:

Docker搭建disconf環(huán)境的過程

server的關(guān)系已經(jīng)理清了,接下來就要開始定制mysql,tomcat,nginx這些鏡像了,首先是準備材料,disconf是個開源的應(yīng)用,我們可以在git上下載最新的源碼,執(zhí)行命令:

git clone git@github.com:knightliao/disconf.git

下載完畢,打開文件夾,內(nèi)容如下圖:

Docker搭建disconf環(huán)境的過程

接下來我們開始實戰(zhàn)把,實戰(zhàn)一共五個步驟,依次是: 定制mysql鏡像 -> 定制tomcat鏡像 -> 定制nginx鏡像 -> 編寫docker-compose腳本 -> docker-compose啟動

定制mysql鏡像###

mysql定制:目的是讓容器在創(chuàng)建時自動執(zhí)行sql腳本,創(chuàng)建庫和表,并導(dǎo)入初始化數(shù)據(jù),在docker上實現(xiàn)數(shù)據(jù)庫腳本自動執(zhí)行的方法可以參照《讓docker中的mysql啟動時自動執(zhí)行sql》一文,這里簡單說一下步驟:

  1. 打開disconf源碼文件夾,在disconf/disconf-web/sql目錄下找到以下四個文件:

0-init_table.sql 1-init_data.sql 201512/20151225.sql 20160701/20160701.sql

  1. 新建一個目錄mysql,把上面提到的四個sql文件復(fù)制到這個目錄下,再新建一個名為install_data.sh的腳本,內(nèi)容如下:

#!/bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD <

內(nèi)容很簡單,就是自動登錄mysql,密碼是docker啟動的時候傳入的環(huán)境變量,然后執(zhí)行四個sql腳本文件

  1. 在mysql目錄下新建Dockerfile文件,內(nèi)容如下:

# Docker image of disconf mysql
# VERSION 0.0.1
# Author: bolingcavalry

#基礎(chǔ)鏡像使用daocloud.io/library/mysql:8
FROM daocloud.io/library/mysql:8

#作者
MAINTAINER BolingCavalry 

#定義工作目錄
ENV WORK_PATH /usr/local/work

#定義會被容器自動執(zhí)行的目錄
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

#定義sql文件名
ENV FILE_0 0-init_table.sql
ENV FILE_1 1-init_data.sql
ENV FILE_2 20151225.sql
ENV FILE_3 20160701.sql

#定義shell文件名
ENV INSTALL_DATA_SHELL install_data.sh

#創(chuàng)建文件夾
RUN mkdir -p $WORK_PATH

#把數(shù)據(jù)庫初始化數(shù)據(jù)的文件復(fù)制到工作目錄下
COPY ./$FILE_0 $WORK_PATH/
COPY ./$FILE_1 $WORK_PATH/
COPY ./$FILE_2 $WORK_PATH/
COPY ./$FILE_3 $WORK_PATH/

#把要執(zhí)行的shell文件放到/docker-entrypoint-initdb.d/目錄下,容器會自動執(zhí)行這個shell
COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/

#給執(zhí)行文件增加可執(zhí)行權(quán)限
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL
  1. 打開終端在mysql目錄下執(zhí)行以下命令,構(gòu)建msql鏡像:

docker build -t conf_mysql:0.0.1 .

msql鏡像構(gòu)建成功

定制tomcat鏡像###

構(gòu)建tomcat鏡像時最重要的就是war包的生成,步驟如下:

  1. 創(chuàng)建兩個文件夾,分別設(shè)置到ONLINE_CONFIG_PATHWAR_ROOT_PATH這兩個環(huán)境變量中,環(huán)境變量的設(shè)置方式在不同的操作系統(tǒng)下各不相同,我用的是mac,配置方式是在~/.bash_profile文件中加入以下內(nèi)容(寫完記得執(zhí)行source ~/.bash_profile使環(huán)境變量在當前命令行窗口生效):

ONLINE_CONFIG_PATH=/Users/zq2599/temp/201705/03/005/online-resources
WAR_ROOT_PATH=/Users/zq2599/temp/201705/03/005/war
export ONLINE_CONFIG_PATH
export WAR_ROOT_PATH

/Users/zq2599/temp/201705/03/005/online-resources/Users/zq2599/temp/201705/03/005/war都是剛剛新建的文件夾;

  1. 打開disconf的源文件的子目錄disconf-web/profile/rd,里面的文件如下圖:

Docker搭建disconf環(huán)境的過程

把這些文件全部復(fù)制到ONLINE_CONFIG_PATH變量對應(yīng)的目錄下,在這個目錄下依次修改jdbc-mysql.properties,redis-config.properties,zoo.properties這三個文件:

jdbc-mysql.properties的改動如下圖,主要是數(shù)據(jù)url改成一個固定的名字mysqlhost,這個在docker run的時候要和link參數(shù)中的別名一致,還有就是數(shù)據(jù)庫的用戶名密碼:

Docker搭建disconf環(huán)境的過程

redis-config.properties的改動如下圖,主要是host參數(shù),也要和docker run時候的link參數(shù)的別名對齊,注意,這里要配置兩個redis

Docker搭建disconf環(huán)境的過程

zoo.properties的配置如下圖,主要是host參數(shù),也要和docker run時候的link參數(shù)的別名對齊:

Docker搭建disconf環(huán)境的過程

把application-demo.properties文件改名為application.properties

好了,修改參數(shù)的事情就算做完了,有了這些和link參數(shù)一致的host配置,tomcat在運行的時候就能連接上對應(yīng)的容器了。

現(xiàn)在我們用maven來編譯和打包disconf的源碼,用終端進入disconf源碼的disconf-web子目錄,執(zhí)行以下命令開始編譯和打包:

sh deploy/deploy.sh

執(zhí)行完畢后,在環(huán)境變量WAR_ROOT_PATH對應(yīng)的目錄下,可以看到編譯和打包的結(jié)果,如下圖:

Docker搭建disconf環(huán)境的過程

新建一個名叫tomcat的文件夾,把上圖中的disconf-web.war復(fù)制到這個文件夾下,再在這里新增一個server.xml文件,內(nèi)容如下,用來指定tomcat服務(wù)的根路徑對應(yīng)的應(yīng)用:



  
  
  
  
  
  
  
    
  
  
    
    
    
      
        
      
      
        
                
      
    
  

這個配置信息和官方tomcat中的server.xml文件相比,其實只增加了下面這一個節(jié)點的內(nèi)容:

在tomcat文件夾下新增Dockerfile文件,內(nèi)容如下:

# Docker image of disconf tomcat
# VERSION 0.0.1
# Author: bolingcavalry

#基礎(chǔ)鏡像使用tomcat:7.0.77-jre8
FROM tomcat:7.0.77-jre8

#作者
MAINTAINER BolingCavalry 

#定義工作目錄
ENV TOMCAT_BASE /usr/local/tomcat


#復(fù)制配置文件
COPY ./server.xml $TOMCAT_BASE/conf/

#復(fù)制war包
COPY ./disconf-web.war $TOMCAT_BASE/webapps/

#給配置文件增加讀權(quán)限
RUN chmod a+xr $TOMCAT_BASE/conf/server.xml

#刪除默認的ROOT文件件
RUN rm -rf $TOMCAT_BASE/webapps/ROOT

看的出Dockerfile做的事情并不多,就是復(fù)制war包,復(fù)制server.xml,刪除默認的ROOT應(yīng)用文件夾這些事情;

現(xiàn)在打開終端在tomcat目錄下執(zhí)行以下命令,構(gòu)建tomcat鏡像:

docker build -t conf_tomcat:0.0.1 .

tomcat鏡像構(gòu)建成功!

###構(gòu)建nginx鏡像###

  1. 新建一個nginx目錄,在里面新增一個nginx.conf文件,內(nèi)容如下:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;


    upstream disconf {  
        server tomcathost:8080;  
    }  
  
    server {  
        listen   80;  
        server_name localhost;  
        access_log logs/disconf_access.log;  
        error_log logs/disconf_error.log;  
  
        location / {  
            root /usr/local/work/html;  
            if ($query_string) {  
                expires max;  
            }  
        }  
  
        location ~ ^/(api|export) {  
            proxy_pass_header Server;  
            proxy_set_header Host $http_host;  
            proxy_redirect off;  
            proxy_set_header X-Real-IP $remote_addr;  
            proxy_set_header X-Scheme $scheme;  
            proxy_pass http://disconf;  
        }  
    }  

}

主要的配置有三點:

將默認的/etc/nginx/conf.d/*.conf配置注釋掉; 增加tomcat的host信息,“tomcathost”和后面docker run的link參數(shù)的別名保持一致; 動靜分離的配置,請求url中如果帶有api和export,nginx就把請求轉(zhuǎn)發(fā)到tomcathost:8080,其他的請求直接訪問nginx服務(wù)器的/usr/local/work/html文件夾;

  1. 在環(huán)境變量WAR_ROOT_PATH對應(yīng)的目錄下,有個html文件夾如下圖紅框位置,這是web工程全部靜態(tài)文件,把這個文件夾復(fù)制到剛才新建的nginx目錄下:

Docker搭建disconf環(huán)境的過程

  1. 在nginx文件夾下新增Dockerfile文件,內(nèi)容如下:

# Docker image of disconf nginx
# VERSION 0.0.1
# Author: bolingcavalry

#基礎(chǔ)鏡像使用nginx:stable
FROM nginx:stable

#作者
MAINTAINER BolingCavalry 

#定義工作目錄
ENV WORK_PATH /usr/local/work/html

#定義nginx配置文件所在目錄
ENV NGINX_CONF_DIR /etc/nginx

#定義nginx配置文件名稱
ENV NGINX_CONF_FILE_NAME nginx.conf

#創(chuàng)建工作文件夾
RUN mkdir -p $WORK_PATH

#創(chuàng)建nginx日志文件夾
RUN mkdir -p /etc/nginx/logs/

#復(fù)制nginx配置文件
COPY ./$NGINX_CONF_FILE_NAME $NGINX_CONF_DIR/

#復(fù)制網(wǎng)頁的靜態(tài)資源文件
COPY ./html $WORK_PATH/

#給配置文件增加讀權(quán)限
RUN chmod a+xr $NGINX_CONF_DIR/$NGINX_CONF_FILE_NAME
  1. 現(xiàn)在打開終端在nginx目錄下執(zhí)行以下命令,構(gòu)建nginx鏡像:

docker build -t conf_nginx:0.0.1 .

nginx鏡像構(gòu)建成功!

編寫docker-compose腳本###

新增一個docker-compose.yml文件(位置無所謂),內(nèi)容如下:

version: '2'
services:
  disconf_redis_1: 
    image: daocloud.io/library/redis
    restart: always
  disconf_redis_2: 
    image: daocloud.io/library/redis
    restart: always
  disconf_zookeeper: 
    image: zookeeper:3.3.6
    restart: always
  disconf_mysql: 
    image: conf_mysql:0.0.1
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    restart: always
  disconf_tomcat: 
    image: conf_tomcat:0.0.1
    links: 
      - disconf_redis_1:redishost001 
      - disconf_redis_2:redishost002
      - disconf_zookeeper:zkhost
      - disconf_mysql:mysqlhost
    restart: always
  disconf_nginx: 
    image: conf_nginx:0.0.1
    links: 
      - disconf_tomcat:tomcathost 
    ports: 
      - "80:80" 
    restart: always

按照我們最初梳理的依賴關(guān)系,啟動兩個redis官方鏡像,一個zookeeper官方鏡像,再啟動定制的msyql鏡像,然后tomcat啟動并通過link關(guān)聯(lián)redis,zookeeper,mysql等容器,最后是定制的nginx啟動,link關(guān)聯(lián)tomcat,并且nginx容器的80端口映射到當前電腦的80端口;

啟動所有容器###

在docker-compose.yml文件所在的目錄下,執(zhí)行命令:

docker-compose up -d

終端會顯示正在啟動各個容器,如下圖,每個容器的名稱會被docker-compose加上前綴和后綴:

Docker搭建disconf環(huán)境的過程

tomcat的應(yīng)用啟動需要一點時間,我們可以通過docker logs -f disconf_disconf_tomcat_1命令來查看tomcat啟動日志,disconf_disconf_tomcat_1是容器名稱,如上圖中的紅框所示。

啟動完畢后,在瀏覽器上輸入localhost,可以看見熟悉的disconf登錄頁面,用戶名admin,密碼admin,登錄進去試試吧:

Docker搭建disconf環(huán)境的過程

感謝各位的閱讀,以上就是“Docker搭建disconf環(huán)境的過程”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Docker搭建disconf環(huán)境的過程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


標題名稱:Docker搭建disconf環(huán)境的過程
分享路徑:http://weahome.cn/article/ispodp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部