转 docker:基于centos7系统下的docker-compose一键项目部署案例

      版权声明:本文为博主原创文章,未经博主允许不得转载。          https://blog.csdn.net/sinat_31032177/article/details/80282705        </div>
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
                          <div id="content_views" class="markdown_views prism-atom-one-dark">
        <!-- flowchart 箭头图标 勿删 -->
        <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
          <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
        </svg>
        <p>一、安装docker</p>
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服务


 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、安装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 版本过低部分功能无法使用

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、获取国内镜像加速器
这里写图片描述
注册阿里云帐号即可获得 如图配置可解决无法pull镜像的问题

四、部署基础镜像
1、从网上镜像仓库下载镜像(可联网环境)
docker search 命令查询镜像源中的镜像,下图以swarm为例
这里写图片描述
docker pull 命令根据NAME下载对应的镜像 ,docker images 查看服务器中已有镜像
这里写图片描述

2、本地tar文件导入镜像(离线环境)
将压缩文件导入服务器
这里写图片描述

docker load -i 命令可将压缩成tar文件的镜像导入服务器

docker load -i docker_mapbox.tar 

 
 
  • 1

这里写图片描述

五、重构建镜像
因为一般的基础镜像不足以满足实际部署需求,需要对镜像进行个性化的定制如:数据库需要建表,序列,导入数据;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 ‘删除标记’;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

例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包

//除了以上的配置参数外还有很多,有兴趣自查

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2、运行Dockerfile构建镜像(此教程将此过程配置在docker-compose.yml 文件中)

docker build -t ljl/ssh ./   //-t镜像名字  .当前目录

 
 
  • 1

六、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:

//参数还有很多,有兴趣自查

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73

2、docker-compose up -d 命令 完成镜像重构和容器启动
这里写图片描述

重构的镜像如图
这里写图片描述

启动的容器如图
这里写图片描述

如果端口链接打不开 尝试此代码

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

 
 
  • 1
      </div>
      <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
              </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值