1. 程式人生 > >基於centos7系統下的docker-compose一鍵專案部署案例

基於centos7系統下的docker-compose一鍵專案部署案例

一、安裝docker

yum list docker //查詢可下載的軟體,查詢結果如下
docker.x86_64                       2:1.13.1-53.git774336d.el7.centos                        @extras

yum -y install docker.x86_64 //安裝docker

service docker start/stop/restart //啟動/停止/重啟docker服務

二、安裝docker-compose 外掛用於編排映象

curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose            //下載並安裝docker-compose
chmod +x /usr/local/bin/docker-compose //設定許可權 docker-compose -version //檢視版本,此版本為1.14 版本過低部分功能無法使用

三、獲取國內映象加速器
這裡寫圖片描述
註冊阿里雲帳號即可獲得 如圖配置可解決無法pull映象的問題

四、部署基礎映象
1、從網上映象倉庫下載映象(可聯網環境)
docker search 命令查詢映象源中的映象,下圖以swarm為例
這裡寫圖片描述
docker pull 命令根據NAME下載對應的映象 ,docker images 檢視伺服器中已有映象
這裡寫圖片描述

2、本地tar檔案匯入映象(離線環境)
將壓縮檔案匯入伺服器
這裡寫圖片描述

docker load -i 命令可將壓縮成tar檔案的映象匯入伺服器

docker load -i docker_mapbox.tar 

這裡寫圖片描述

五、重構建映象
因為一般的基礎映象不足以滿足實際部署需求,需要對映象進行個性化的定製如:資料庫需要建表,序列,匯入資料;tomcat需要放入war包。
1、Dockerfile的構建

例1:資料庫映象重構

FROM mdillon/postgis:latest                                  //基礎映象,本地有會用本地;本地沒有會從網上pull
MAINTAINER "LJL" <1491623908
@qq.com> //維護人資訊 ENV TZ=Asia/Shanghai //地地區 COPY ./all_object.sql /docker-entrypoint-initdb.d/ //將"本路徑"下的all_object.sql 檔案拷貝到PG資料庫的docker-entrypoint-initdb.d/檔案路徑下(該目錄下的檔案在映象啟動容器時會自動執行) all_object.sql內有建表和匯入資料等語句 CREATE TABLE "public"."sys_menu" ( "id" varchar(64) COLLATE "default" NOT NULL, "parent_id" varchar(64) COLLATE "default" NOT NULL, "parent_ids" varchar(2000) COLLATE "default" NOT NULL, "name" varchar(100) COLLATE "default" NOT NULL, "sort" numeric(10) NOT NULL, "href" varchar(2000) COLLATE "default", "target" varchar(20) COLLATE "default", "icon" varchar(100) COLLATE "default", "is_show" char(1) COLLATE "default" NOT NULL, "permission" varchar(200) COLLATE "default", "create_by" varchar(64) COLLATE "default" NOT NULL, "create_date" timestamp(0) NOT NULL, "update_by" varchar(64) COLLATE "default" NOT NULL, "update_date" timestamp(0) NOT NULL, "remarks" varchar(255) COLLATE "default", "del_flag" char(1) COLLATE "default" NOT NULL ) WITH (OIDS=FALSE) ; COMMENT ON TABLE "public"."sys_menu" IS '選單表'; COMMENT ON COLUMN "public"."sys_menu"."id" IS '編號'; COMMENT ON COLUMN "public"."sys_menu"."parent_id" IS '父級編號'; COMMENT ON COLUMN "public"."sys_menu"."parent_ids" IS '所有父級編號'; COMMENT ON COLUMN "public"."sys_menu"."name" IS '名稱'; COMMENT ON COLUMN "public"."sys_menu"."sort" IS '排序'; COMMENT ON COLUMN "public"."sys_menu"."href" IS '連結'; COMMENT ON COLUMN "public"."sys_menu"."target" IS '目標'; COMMENT ON COLUMN "public"."sys_menu"."icon" IS '圖示'; COMMENT ON COLUMN "public"."sys_menu"."is_show" IS '是否在選單中顯示'; COMMENT ON COLUMN "public"."sys_menu"."permission" IS '許可權標識'; COMMENT ON COLUMN "public"."sys_menu"."create_by" IS '建立者'; COMMENT ON COLUMN "public"."sys_menu"."create_date" IS '建立時間'; COMMENT ON COLUMN "public"."sys_menu"."update_by" IS '更新者'; COMMENT ON COLUMN "public"."sys_menu"."update_date" IS '更新時間'; COMMENT ON COLUMN "public"."sys_menu"."remarks" IS '備註資訊'; COMMENT ON COLUMN "public"."sys_menu"."del_flag" IS '刪除標記';

例2:tomcat映象重構

FROM tomcat                                                    
MAINTAINER "LJL" <1491623908@qq.com>
ENV TZ=Asia/Shanghai
COPY ./geoserver.war /usr/local/tomcat/webapps/                     //"本路徑"中的war包拷貝到tomcat的webapp路徑下,會在啟動tomcat時自動解壓執行war包


//除了以上的配置引數外還有很多,有興趣自查

2、執行Dockerfile構建映象(此教程將此過程配置在docker-compose.yml 檔案中)

docker build -t ljl/ssh ./   //-t映象名字  .當前目錄

六、docker-compose 統一編排管理容器
1、docker-compose.yml檔案的配置(上文中的”本路徑”均是指與此檔案相同的路徑)
目錄結構如圖
這裡寫圖片描述

version: '2'                                                                     //版本號
services:                                                                        //服務,下一級均為服務名
    tomcatGeo:                                                                   //服務名
        container_name: Geo                                                      //生成容器名
        image: "tomcat:Geo"                                                      //生成該容器的映象名(重構後的映象)          
        build:                                                                   //構建映象
            context: .                                                           //dockerfile來源路徑(.代表本路徑)
            dockerfile: Dockerfile.tomcatGeo                                     //指定dockerfile
        ports:                                                                   //配置埠
            - "9087:8080"                                                        //對映埠:軟體埠(外網通過 ip地址:9087 來訪問此tomcat)
        networks:                                                                //網路名(僅為一個標記,用來保證所有容器執行與同一網路下,保證容器間的互相通訊的可行性)
            - mynet

    tomcatMap:
        container_name: Map
        image: "tomcat:Map"
        build:
            context: .
            dockerfile: Dockerfile.tomcatMap
        ports:
            - "8888:8080"
        networks:
            - mynet        

    tomcatWeb:
        container_name: Web
        image: "tomcat:Web"
        build:
            context: .
            dockerfile: Dockerfile.tomcatWeb
        ports:
            - "8087:8080"
        networks:
            - mynet       
                                                                                 //以上三個tomcat是同一個基礎映象的三個不同的重構

    postgresql:              
        container_name: postgresql
        image: "postgresql:131"
        build:
            context: .
            dockerfile: Dockerfile.PGsql
        environment:                                                            //環境引數:帳號密碼
            - POSTGRES_PASSWORD=postgres                                        
            - POSTGRES_USER=postgres
        ports:
            - "5432:5432"
        networks:
            - mynet

    mongo:
        container_name: mongo
        image: docker_mongo:latest
        ports:
            - "27017:27017"
        networks:
            - mynet

    mapbox:
        container_name: mapbox
        image: container-backup:latest
        ports:
            - "9095:80"
        networks:
            - mynet

networks:
    mynet:




//引數還有很多,有興趣自查

2、docker-compose up -d 命令 完成映象重構和容器啟動
這裡寫圖片描述

重構的映象如圖
這裡寫圖片描述

啟動的容器如圖
這裡寫圖片描述

如果埠連結打不開 嘗試此程式碼

firewall-cmd --zone=public --add-port=5432/tcp --permanent