Docker Swarm java 服務集羣

Docker Swarm java 服務集羣java

環境1:linux

  • 系統: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:redis

  • 已搭建 Docker Swarm 管理
  • 已搭建 Docker 私有倉庫
  • 已搭建 NFS 存儲

目錄結構spring

├── 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.ymldocker


下載centos

  • jdk壓縮包
  • 下載地址:https://pan.baidu.com/s/19U8gcJJwDeFvRltCxjAw1A
  • 密碼:ff2c

一、建立dockerfileapi

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
文件註釋

 

二、建立鏡像(redis目錄下)springboot

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

 

三、上傳鏡像網絡

docker push 192.168.1.81:5000/java:v1

 

四、建立 service_java.ymltcp

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"
文件註釋

 

五、建立服務

docker stack deploy -c service_java.yml java 
相關文章
相關標籤/搜索