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 的转发有局限性,比如每增加一个服务就需要配置一条内容,另外后端的服务如果是动态来提供,就不能采用这种方案来配置了.实际上在实现微服务架构时,服务名与服务实例地 ...
随机推荐
- Oracle中的NULL、’’(空字符串)以及’_’(空格)
本文首发于 http://youngzy.com/ 在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? null和’’(空字符串)是一个意思 注: 为了便于 ...
- 11.8Django中的组件content_type
2018-11-8 18:59:11 在Django中已经有一个contenttype这个组件,并且在python manage.py makemigrations 和migrate的时候,一起在数据 ...
- 把Oracle由归档模式改为非归档模式
把Oracle由归档模式改为非归档模式 开始–>运行命令cmd进入命令行模式 1. 使用命令sqlplus以无日志形式打开如下: sqlplus /nolog; 2. 连接数据库dev.worl ...
- 从vue渲染想到的数组方法
<div id="app"> <ul> <li v-for='item in goods'>{{item}}</li> </u ...
- java对excel文件内容读写修改操作
Read.java package domain; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cel ...
- TCP 套叠字
一. TCP 协议 # ------------TCP套叠字-------------------- server 端 import socket,time ip_port=('localhost' ...
- 用友U8存货分类通过DataTable生成EasyUI Tree JSON
<%@ WebHandler Language="C#" Class="InventoryClass" %> using System; using ...
- 找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.应用程序类必 须扩展javafx.application.Application”
用eclipse写代码的时候,写了一个简单的程序,编译的时候突然出现“错误: 在类 com.test.demo 中找不到 main 方法, 请将 main 方法定义为: public static v ...
- python----下载与安装
在 Windows 上安装 Python 在 Windows 上安装 Python 请按如下步骤进行. 首先,登录 https://www.python.org/downloads/ 页面,可以在该页 ...
- 删除已渲染select标签的值
var removeSaleTypeEnumIs2 = function(){ var sel = document.getElementById('saleType'); sel.remove(se ...