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 

 

posted @ 2019-01-19 14:13  kevin.Xiang  阅读(1219)  评论(0编辑  收藏  举报