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
Docker Swarm java 服务集群的更多相关文章
- docker --swarm创建一个集群
如果搭建错误可以强制脱离集群网络: docker swarm leave --force 初始化集群网络管理节点: docker swarm init --advertise-addr 10.101. ...
- 开发的服务集群部署方案,以etcd为基础(java)
当前有很多服务集群部署,但是对于我们自己开发的服务系统怎么样能够解决部署问题,对大家很麻烦和笨重. 首先,我想说对于我们国内,小公司小系统比较多.大型系统毕竟少数,向阿里云看齐的不多.其实所谓的需要集 ...
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- Docker实战之Consul集群
前言 最近参加了几场 Java 面试,发现大多数的微服务实践还是 Eureka 偏多,鉴于笔者的单位选型 Consul,这里对 Consul 做简单总结. 该篇是 Docker 实战系列的第三篇.传送 ...
- Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- Docker 容器部署 Consul 集群
Docker 容器部署 Consul 集群 一.docker安装与启动1.1安装docker[root@localhost /]# yum -y install docker-io 1.2更改配置文件 ...
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...
- 轻松搭建docker应用的mesos集群
7条命令在docker中部署Mesos集群 所有使用的Docker容器构建文件是有也.您可以在本地构建每个容器或只使用位于Docker Hub预构建的容器.下面的命令会自动下载所需的预建的容器为您服务 ...
- Spring Cloud(Dalston.SR5)--Zuul 网关-微服务集群
通过 url 映射的方式来实现 zuul 的转发有局限性,比如每增加一个服务就需要配置一条内容,另外后端的服务如果是动态来提供,就不能采用这种方案来配置了.实际上在实现微服务架构时,服务名与服务实例地 ...
随机推荐
- 异步任务神器 Celery-入门
一.Celery入门介绍 在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免它们阻塞主程序的运行,我们经常会采用多线程或异步任务.比如,在 Web 开发中,对新用户的注册,我们通常会给他 ...
- docker参数注解
# docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h ...
- Piggy-Bank 完全背包
来源hdu1114 Problem Description Before ACM can do anything, a budget must be prepared and the necessar ...
- vue2中使用 better-scroll
使用时有三个要点: 一:html部分 <div class="example" ref="divScroll"> <div> <p ...
- [Manthan, Codefest 18][Codeforces 1037F. Maximum Reduction]
题目链接:1037F - Maximum Reduction 题目大意:给出一段代码,给你一个长度为n的数组和数字k,求程序运行结果,mod 1e9+7输出 简单翻译下代码的意思,初始定义一个空数组b ...
- Spring Security的核心拦截器
1. HttpSessionContextIntegrationFilter 位于过滤器顶端,第一个起作用的过滤器. 用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个Sec ...
- 7款让人惊叹的HTML5粒子动画特效(转载)
1.HTML5 Canvas粒子模拟效果 这是一款利用HTML5 Canvas模拟出来的30000个粒子动画,当你用鼠标在canvas画布上移动时,鼠标周围的一些粒子就会跟着你移动,并形成一定的图案, ...
- spring 核心
1 Spring 1.1 专业术语了解 1.1.1 组件/框架设计 侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如: Struts框架 非侵入式设计 引入了 ...
- 这 10 款良心 Windows 软件,改变你对国产的认知
提起国产 Windows 软件,你可能首先想到的是捆绑安装.弹窗广告.卸载残留等关键词.尽管一些所谓「大厂」的确致力于拉低业界的下限,但依然有开发者坚守底线,为改变整个生态圈而默默努力.今天,少数派就 ...
- axios库的使用
axios是基于Promise 用于浏览器和 nodejs 的 HTTP 客户端:可以用在webpack + vuejs 的项目中 原文 https://github.com/axios/axios ...