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