docker:基於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" <[email protected]>                         //維護人信息
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" <[email protected]>
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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章