zoukankan      html  css  js  c++  java
  • Docker Swarm java 服务集群

    Docker Swarm java 服务集群

    环境1:

    • 系统:Linux Centos 7.4 x64
    • 内核:Linux docker 3.10.0-693.2.2.el7.x86_64
    • Docker 版本:18.09.1
    • jdk 版本:1.8
    • 主机数量:1台
    • 主机地址:192.168.1.81

    环境2:

    • 已搭建 Docker Swarm 管理
    • 已搭建 Docker 私有仓库
    • 已搭建 NFS 存储

    目录结构

    ├── java
    │   ├── apiclient_cert.p12(可忽略)
    │   ├── Dockerfile
    │   ├── jdk-8u181-linux-x64.tar.gz
    │   ├── rongyunKEY.txt(可忽略)
    │   ├── start.sh(可忽略)
    │   ├── TimeStatistics.txt(可忽略)
    │   ├── zhibof330e2e4367.p12(可忽略)
    │   └── zkhz_springboot-0.0.1-SNAPSHOT.jar(java服务程序)
    ├── service_java.yml


    下载

    • jdk压缩包
    • 下载地址:https://pan.baidu.com/s/19U8gcJJwDeFvRltCxjAw1A
    • 密码:ff2c

    1、创建dockerfile

    FROM centos:6
    MAINTAINER xiangsikai
    ENV LANG en_US.UTF-8
    ENV TZ=Asia/Shanghai
    RUN yum -y install sudo
    ADD jdk-8u181-linux-x64.tar.gz /usr/local/
    ENV JAVA_HOME /usr/local/jdk1.8.0_181
    ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $PATH:$JAVA_HOME/bin
    RUN sudo mkdir -p /usr/local/java_zkhz/ && 
        sudo mkdir -p /usr/java_zkhz/Certificate && 
        sudo mkdir -p /var/log/java/
    COPY apiclient_cert.p12 zhibof330e2e4367.p12 /usr/java_zkhz/Certificate/
    COPY rongyunKEY.txt TimeStatistics.txt start.sh /usr/local/java_zkhz/
    COPY zkhz_springboot-0.0.1-SNAPSHOT.jar /usr/local/java_zkhz/
    RUN sudo chmod 755 /usr/java_zkhz/Certificate/apiclient_cert.p12 
        /usr/java_zkhz/Certificate/zhibof330e2e4367.p12 
        /usr/local/java_zkhz/start.sh
    CMD ["java","-jar","/usr/local/java_zkhz/zkhz_springboot-0.0.1-SNAPSHOT.jar"]
    EXPOSE 8080
    # 指定系统镜像版本
    FROM centos:6
    # 指定管理员名称
    MAINTAINER xiangsikai
    # 添加变量,指定中文编码
    ENV LANG en_US.UTF-8
    # 添加变量,同步系统时间
    ENV TZ=Asia/Shanghai
    # 添加命令
    RUN yum -y install sudo
    # 添加文件
    ADD jdk-8u181-linux-x64.tar.gz /usr/local/
    # 添加变量,指定jdk
    ENV JAVA_HOME /usr/local/jdk1.8.0_181
    # 添加变量,指定jdk
    ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    # 添加变量,指定jdk
    ENV PATH $PATH:$JAVA_HOME/bin
    # 添加命令
    RUN sudo mkdir -p /usr/local/java_zkhz/ && 
        sudo mkdir -p /usr/java_zkhz/Certificate && 
        sudo mkdir -p /var/log/java/
    # 添加文件
    COPY apiclient_cert.p12 zhibof330e2e4367.p12 /usr/java_zkhz/Certificate/
    # 添加文件
    COPY rongyunKEY.txt TimeStatistics.txt start.sh /usr/local/java_zkhz/
    # 添加文件
    COPY zkhz_springboot-0.0.1-SNAPSHOT.jar /usr/local/java_zkhz/
    # 添加命令
    RUN sudo chmod 755 /usr/java_zkhz/Certificate/apiclient_cert.p12 
        /usr/java_zkhz/Certificate/zhibof330e2e4367.p12 
        /usr/local/java_zkhz/start.sh
    # 启动命令
    CMD ["java","-jar","/usr/local/java_zkhz/zkhz_springboot-0.0.1-SNAPSHOT.jar"]
    # 开放端口
    EXPOSE 8080
    文件注释

    2、创建镜像(redis目录下)

    docker build -t 192.168.1.81:5000/java:v1 .

    3、上传镜像

    docker push 192.168.1.81:5000/java:v1

    4、创建 service_java.yml

    version: '3.7'
    services:
    
      java:
        image: 192.168.1.81:5000/java:v1
        ports:
          - 8888:8080
        networks:
          - networkce
        deploy:
          mode: replicated
          replicas: 2
          update_config:
            parallelism: 1
            delay: 60s
            failure_action: rollback
            order: start-first
          rollback_config:
            parallelism: 1
            delay: 60s
            failure_action: rollback
            order: start-first
        volumes:
          - type: volume
            source: nfs-java_log
            target: /var/log/java
            volume:
              nocopy: true
        #depends_on:
        #  - redis
    
    networks:
      networkce:
        driver: overlay
    
    volumes:
      nfs-java_log:
        driver: local
        driver_opts:
          type: "nfs"
          o: "addr=192.168.1.81,soft,timeo=180,bg,tcp,rw"
          device: "192.168.1.81:/docker/service/zs/java/log"
    # 指定版本
    version: '3.7'
    # 服务
    services:
    
    # 指定服务名
      java:
        # 指定使用镜像
        image: 192.168.1.81:5000/java:v1
        # 指定开放端口
        ports:
          - 8888:8080
        # 指定网络
        networks:
          - networkce
        # 管理容器
        deploy:
          # 设置副本模式
          mode: replicated
          # 副本数
          replicas: 2
          # 更新配置
          update_config:
            # 每次更新数量
            parallelism: 1
            # 每次更新时间
            delay: 60s
            # 更新失败设置,rollback回滚
            failure_action: rollback
            # 更新状态,start-firest 更新同时叠加旧版本,之后删除
            order: start-first
          # 回滚配置
          rollback_config:
            # 每次回滚数量
            parallelism: 1
            # 每次回滚时间
            delay: 60s
            # 回滚失败设置,rollback回滚
            failure_action: rollback
            # 回滚状态,start-firest 回滚同时叠加旧版本,之后删除
            order: start-first
        # 配置持久化数据
        volumes:
          # 数据类型
          - type: volume
            # 设置名称
            source: nfs-java_log
            # 挂载容器路径
            target: /var/log/java
            # 默认
            volume:
              nocopy: true
        #depends_on:
        #  - redis
    
    # 网络
    networks:
      # 添加网络名称
      networkce:
        driver: overlay
    
    # 数据持久化
    volumes:
      # 数据名称
      nfs-java_log:
        driver: local
        driver_opts:
         # 类型
          type: "nfs"
          # 官方默认配置 
          o: "addr=192.168.1.81,soft,timeo=180,bg,tcp,rw"
          device: "192.168.1.81:/docker/service/zs/java/log"
    文件注释

    5、创建服务

    docker stack deploy -c service_java.yml java 
  • 相关阅读:
    mysql导sql脚本
    oracle导sql脚本
    基于jdk proxy的动态代理模式
    vue组件之组件的生命周期
    vue组件之组件间的通信
    python-爬虫scrapy框架安装及基本使用
    mongdb的使用
    python-爬虫 多线程爬虫
    python-爬虫 爬虫利器BeautifulSoup
    python-爬虫lxml库
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/10291594.html
Copyright © 2011-2022 走看看