使用docker-compose运行微服务项目#eureka+config+auth+gateway+module
微服务架构中我们使用了必须的四个组件,eureka
config
gateway
auth
其中config
依赖eureka
,auth
依赖前两者,gateway
又依赖auth
这样就确定了四个组件的启动顺序为 ,eureka
-- config
-- auth
-- gateway
既然有依赖,那就肯定会使用depends_on
参数,但是这个参数只会判断容器启动没有,并不会去判断容器是否能用,就像你创建了一个nginx镜像的容器,容器启动后并不代表能立马访问;
所有就需要使用健康检查 healthcheck
我的思路是容器创建启动后去访问baidu,如果能访问成功,则判断容器启动成功,健康状态为healthy,但是前提是容器有curl
命令
其实上面的方法还是不严谨,目前也还在学习,因为存在一种可能就是容器可以去访问baidu了,并不一定代表外部容器能访问这个容器!
四个组件都加入了创建的自定义桥接网络中,与其他业务隔离
后面的第二个docker-compose.yaml
文件,是业务模块容器,因为也要加入当前网络中,所以使用了external_links
参数,external_links
与links
的区别就是前者可连接非当前compose定义的网络中
networks:
default:
external:
name: fbl-base_fbl
external_links
的使用,需要定义networks为compose外部的已创建的网络名称
networks:
fbl:
driver: bridge
在第一个compose中自定义了名为fbl
的桥接网络
以下仅供学习使用,生产请勿使用!
第一个compose:
# 版本不同,部分语法不同,比如healthcheck在2版本就不能使用,2.1就可以
version: '2.1'
services:
fbl-eureka:
# 构建镜像,依赖Dockerfile文件
build:
context: ./
dockerfile: Dockerfile-eureka
# 容器名称
container_name: fbl-eureka
# 容器主机名
hostname: fbl-eureka
# 设置环境变量,这里是设置的时区
environment:
- TZ=Asia/Shanghai
# 挂载日志文件到宿主机
volumes:
- /data/docker/logs:/data/fbl/logs/fbl-cloud/
# 暴露端口
ports:
- 1025:1025
# 重启模式
# no,默认策略,在容器退出时不重启容器
# on-failure,在容器非正常退出时(退出状态非0),才会重启容器
# on-failure:3,在容器非正常退出时重启容器,最多重启3次
# always,在容器退出时总是重启容器
# unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
restart: always
# 健康检查
healthcheck:
test: ["CMD-SHELL", "curl -f http://baidu.com && exit 0 || exit 1"]
# 检查间隔时间
interval: 10s
# 检查请求超时时间,超时则为失败
timeout: 3s
# 可以的失败次数
retries: 10
# 加入的网络
networks:
- fbl
fbl-config:
# 连接容器eureka,因为容器都在fbl网络中,可以直接用容器名连接
links:
- fbl-eureka:eureka
build:
context: ./
dockerfile: Dockerfile-config
container_name: fbl-config
hostname: fbl-config
environment:
- TZ=Asia/Shanghai
volumes:
- /data/docker/logs:/data/fbl/logs/fbl-cloud/
ports:
- 1111:1111
# 依赖于eureka启动,当eureka正常启动,健康状态为healthy时,启动该容器
depends_on:
fbl-eureka:
condition: service_healthy
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://baidu.com && exit 0 || exit 1"]
interval: 10s
timeout: 3s
retries: 10
networks:
- fbl
fbl-auth:
links:
- fbl-eureka:eureka
build:
context: ./
dockerfile: Dockerfile-auth
container_name: fbl-auth
hostname: fbl-auth
environment:
- TZ=Asia/Shanghai
volumes:
- /data/docker/logs:/data/fbl/logs/fbl-cloud/
ports:
- 3000:3000
depends_on:
fbl-config:
condition: service_healthy
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://baidu.com && exit 0 || exit 1"]
interval: 10s
timeout: 3s
retries: 10
networks:
- fbl
fbl-gateway:
links:
- fbl-eureka:eureka
- fbl-auth:auth
build:
context: ./
dockerfile: Dockerfile-gateway
container_name: fbl-gateway
hostname: fbl-gateway
environment:
- TZ=Asia/Shanghai
volumes:
- /data/docker/logs:/data/fbl/logs/fbl-cloud/
ports:
- 9999:9999
depends_on:
fbl-auth:
condition: service_healthy
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://baidu.com && exit 0 || exit 1"]
interval: 10s
timeout: 3s
retries: 10
networks:
- fbl
networks:
fbl:
driver: bridge
第二个compose,为依赖四大组件的模块服务
version: '2.1'
services:
fbl-findhousewx-service1:
build:
context: ./
dockerfile: Dockerfile-findhousewx
container_name: fbl-findhousewx1
hostname: fbl-findhousewx1
healthcheck:
test: ["CMD-SHELL", "curl -f http://baidu.com && exit 0 || exit 1"]
interval: 10s
timeout: 3s
retries: 10
environment:
- TZ=Asia/Shanghai
volumes:
- /data/docker/logs:/data/fbl/logs/fbl-cloud/
external_links:
- fbl-eureka:eureka
- fbl-config:config
ports:
- 4020:4020
restart: always
networks:
default:
external:
name: fbl-base_fbl
使用docker-compose运行微服务项目#eureka+config+auth+gateway+module的更多相关文章
- Docker部署golang微服务项目
这篇博客是为了记录一下部署步骤. 因为实训需要,我要在服务器上用docker部署我们小组的微服务项目.我们的微服务有Gateway,User,Scene,Device四个部分,分别占用不同的端口,其中 ...
- SpringCloud微服务项目实战 - API网关Gateway详解实现
前面讲过zuul的网关实现,那为什么今天又要讲Spring Cloud Gateway呢?原因很简单.就是Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用 ...
- 使用Docker Compose编排微服务
一般微服务架构会包含若干个微服务,而每个微服务可以有多个实例,如果每个微服务都有手动启停,那么效率就很低.维护量比较大. 所以我们可以使用Docker Compose来轻松.高效地管理容器. 一.安装 ...
- docker微服务部署之:一,搭建Eureka微服务项目
先说明一下docker需要搭建的微服务的基本情况: 项目情况:一个demo_parent项目,下面三个子模块:demo_eureka(eureka服务).demo_article(文章服务).demo ...
- docker微服务部署之:三,搭建Zuul微服务项目
docker微服务部署之:二.搭建文章微服务项目 一.新增demo_eureka模块,并编写代码 右键demo_parent->new->Module->Maven,选择Module ...
- docker微服务部署之:二、搭建文章微服务项目
docker微服务部署之:一,搭建Eureka微服务项目 一.新增demo_article模块,并编写代码 右键demo_parent->new->Module->Maven,选择M ...
- centos7下docker发布第一个微服务应用(Eureka)
1.在windows下打包 微服务应用通过maven进行打包,在项目的pom.xml执行mvn clean package,或者直接通过idea或者eclipse进行maven打包 之上操作将在项目的 ...
- Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- Docker 搭建 ELK 读取微服务项目的日志文件
思路: 在docker搭建elasticsearch与kibana来展示日志,在微服务部署的机子上部署logstash来收集日志传到elasticsearch中,通过kibana来展示,logstas ...
随机推荐
- win10系统80端口被System (PID=4)占用的解决
今天想用wamp搭建虚拟目录.发现80端口被占用,操作挺麻烦的,所以想要更改. 具体流程如下: 1.“win+R”输入“cmd”,然后输入“netstat -ano | findstr "8 ...
- Windows ->> Windows Server 2012打开管理添加“我的电脑”桌面图标途径
Windows Server 2012打开管理添加“我的电脑”桌面图标途径 rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
- 关于Angular中时间戳的计算
前言 使用的是Moment.js 插件,插件的安装详情请参考官方网址(https://momentjs.com/) 正文 步骤一:引用import * as moment from 'moment'; ...
- [翻译] WZFlashButton
WZFlashButton This is a custom button with flash-like effect. Inspired by Ripple Effect. 这是一个自定义的按钮, ...
- switch结构可以更好的解决等值判断问题
switch 选择结构的语法:switch (表达式){case 常量 1://代码块1:break;case 常量 2://代码块2:break;......default://代码块n:break ...
- 防止开放重定向,恶意篡改returnUrl
1.防止开放重定向: /// <summary> /// 防止开放重定向 /// </summary> /// <param name="url"&g ...
- Linux 系统性能监控命令详解
Linux 系统性能监控命令详解 CPU MEMORY IO NETWORK LINUX进程内存占用查看方法 系统负载过重时往往会引起其它子系统的问题,比如:->大量的读入内存的IO请求(pag ...
- Python的getattr(),setattr(),delattr(),hasattr()及类内建__getattr__应用
@Python的getattr(),setattr(),delattr(),hasattr() 先转一篇博文,参考.最后再给出一个例子 getattr()函数是Python自省的核心函数,具体使用大体 ...
- xss实现获取内网ip
前提得浏览器支持webRTC,测试的时候google浏览器测试成功,火狐浏览器不支持webRTC, 再在xss平台直接复制如下js代码: function form_ip(ip,port){ var ...
- 9、Web Service-IDEA-jaxrs 服务端客户端的实现
关于RestFul编程可以参考:https://www.cnblogs.com/wang-yaz/p/9237981.html 关于jaxrs的实现需要有restful的理解. 话不多说直接上代码!! ...