微服务部署-基于DockerMaven插件构建镜像部署

基于DockerMaven插件构建镜像部署

  • 这是手动部署的升级版,全部配置好之后,只需要在idea上执行一下指定即可,自动上传到docker仓库,自动生成镜像,要注意需要在同一网关内,执行命令前需要手动修改一下配置文件对应的ip为服务名
  1. 修改宿主机的docker配置,让其可以允许远程访问
    # 找到一下行进行修改
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    
  2. 刷新配置,重启服务(配置仓库)
    ## 1 如果没有搭建则创建并启动容器 
    docker run -id --name=registry -p 5000:5000 registry
    ## 2 配置私有仓库地址
    vi /etc/docker/daemon.json
    {
     "registry-mirrors": ["https://pasw6qxp.mirror.aliyuncs.com"],
     "insecure-registries": ["192.168.154.129:5000"]
    }
    ## 3 重启docker
    systemctl daemon-reload
    systemctl restart docker
    docker start registry boot_eureka
    
  3. 配置各服务的maven模板
    <build>
     <!--修改app.jar-->
     <finalName>app</finalName>
     <plugins>
       <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <!--<version>1.5.9.RELEASE</version>-->
       </plugin>
       <!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
       <plugin>
         <groupId>com.spotify</groupId>
         <artifactId>docker-maven-plugin</artifactId>
         <version>1.2.2</version>
         <configuration>
           <!--镜像的名称 跳过上传到私有仓库-->
           <imageName>${project.artifactId}:${project.version}</imageName>
           <!--上传到私有仓库-->
           <!--<imageName>192.168.154.129:5000/${project.artifactId}:${project.version}</imageName>-->
           <!--依赖一个基础镜像 带JDK 1.8-->
           <baseImage>java:8-alpine</baseImage>
           <!--java -jar app.jar -->
           <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
           <resources>
             <resource>
               <targetPath>/</targetPath>
               <directory>${project.build.directory}</directory>
               <include>${project.build.finalName}.jar</include>
             </resource>
           </resources>
           <dockerHost>http://192.168.154.129:2375</dockerHost>
         </configuration>
       </plugin>
     </plugins>
    </build>
    
  4. 修改配置文件中的ip端口,如果是远程配置服务的也需要修改下
    server:
      port: 12580
    spring:
      application:
        name: config-server
      cloud:
        config:
          server:
            git:
              uri: https://gitee.com/dlw/config-test.git # 需要拉取配置的Git仓库地址
    #          username:
    #          password:
      rabbitmq:
    #    host: 192.168.154.129
        host: rabbitmq # 打包时修改
        username: guest
        password: guest
        virtual-host: /
    
    eureka:
      client:
        service-url:
    #      defaultZone: http://127.0.0.1:10086/eureka/ # eureka地址
          defaultZone: http://eureka:10086/eureka/ # 打包时修改
    
    management:
      endpoints:
        web:
          exposure:
            include: bus-refresh
    
    
  5. 在idea中执行maven命令
    # 打包并且将镜像上传到私有注册中心中
    mvn clean package docker:build -DpushImage
    # 跳过上传
    mvn clean package docker:build -DskipDockerPush
    
  6. 查看仓库
    http://192.168.154.129:5000/v2/_catalog
    
  7. 将docke容器放到同一网关内
    # 已启动的
    docker network connect my-net eureka
    
    # 未启动
    docker run -id --name=config_server --network my-net -p [宿主端口]:[容器端口] [镜像ID|镜像名称:tag]
    
  8. 验证,进入eureka中心查看服务是否注册成功
docker maven plugin 是个简单的可以管理Docker容器maven插件,这个插件将会根据你的配置,在构建时启动容器,构建结束时停止容器并删除,如果本地找不到镜像,Docker会自动去中央仓库下载。 简单示例:     com.ofbizian     docker-maven-plugin     1.0.0                                            busybox                                                      start-docker             pre-integration-test                              start                            所有可能配置的完整示例:     com.ofbizian     docker-maven-plugin     1.0.0              http://localhost:4243                                       dockerfile/redis                                      <![CDATA[                     {"Hostname":"",                         "PortSpecs":null,                         "User":"",                         "Tty":false,                         "OpenStdin":false,                         "StdinOnce":false,                         "Memory":0,                         "MemorySwap":0,                         "CpuShares":0,                         "AttachStdin":false,                         "AttachStdout":false,                         "AttachStderr":false,                         "Env":null,                         "Cmd":null,                         "Dns":null,                         "Volumes":null,                         "VolumesFrom":"",                         "Entrypoint":[                         ],                         "NetworkDisabled":false,                         "Privileged":false,                         "WorkingDir":"",                         "Domainname":"",                         "ExposedPorts":null,                         "OnBuild":null}                     ]]>                                                       <![CDATA[                     {"ContainerIDFile": null, "LxcConf": null, "Links": null, "PortBindings": {                         "6379/tcp": [                             {                                 "HostIp": "0.0.0.0",                                 "HostPort": "6379"                             }                         ]                     }, "Privileged": false, "PublishAllPorts": false}                     ]]>                                                            busybox                                                      start-docker             pre-integration-test                              start                                            stop-docker             post-integration-test                              stop                            标签:Docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值