docker-compose之.netcore+mysql+Ocelot+nginx多容器部署
继上节介绍docker-compose之.netcore+mysql+Ocelot多容器部署,这节再加上nginx。
Why Need Nginx
.NET Core中默认的Web Server为Kestrel。
Kestrel可以很好的用来为ASP.NET提供动态内容,然而在Web服务方面没有IIS、Apache、Nginx这些全功能的服务器完善。我们可以借助一个反向代理服务器接收来自互联网的HTTP请求并在经过一些初步处理(比如请求的缓存和压缩、提供静态内容、SSL Termination)后将其转发给Kestrel。

借助反向代理服务器(本文使用Nginx),不仅可以给我们的Web网站提供了一个可选的附加层配置和防御,而且可以简化负载均衡和SSL设置。而更重要的是,反向代理服务器可以很好的与现有的基础设施进行整合。

借助反向代理服务器(Nginx),不仅可以给我们的Web网站提供了一个可选的附加层配置和防御,而且可以简化负载均衡和SSL设置。而更重要的是,反向代理服务器可以很好的与现有的基础设施进行整合。
如果我们当前这个Ocelot网关服务挂掉,系统的整个链路就会垮掉,系统的高可用性就无从谈起了。要想高可用,那就要实现集群。Ocelot网关集群实例如何管理和发现呢?这个任务我们就交给Nginx服务。
基于Consul集群、Ocelot集群和Nginx网关服务的微服务架构,这样既可以解决单节点Ocelot网关服务的不可靠性,也可以实现针对Ocelot网关集群的负载均衡。

项目结构

编写 docker-compose.yml 文件
version: '3'
services:
db:
image: mysql:5.5
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
container_name: db
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_PASSWORD=123456
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_USER=yak
networks:
- dev
volumes:
- "./db:/var/lib/mysql"
- "./conf/my.cnf:/etc/my.cnf"
- "./init:/docker-entrypoint-initdb.d/"
gateway:
container_name: gateway
build:
context: ./OcelotGateway
dockerfile: Dockerfile
ports:
- 80:80
environment:
TZ: "Asia/Shanghai"
ASPNETCORE_ENVIRONMENT: "Production"
links:
- a
- b
- c
- d
networks:
- dev
a:
container_name: businessa
hostname: Business_A
build:
context: ./BusinessProjectA
dockerfile: Dockerfile
ports:
- 81:80
environment:
TZ: "Asia/Shanghai"
ASPNETCORE_ENVIRONMENT: "Production"
networks:
- dev
b:
container_name: businessb
hostname: Business_B
build:
context: ./BusinessProjectA
dockerfile: Dockerfile
ports:
- 82:80
environment:
TZ: "Asia/Shanghai"
ASPNETCORE_ENVIRONMENT: "Production"
networks:
- dev
c:
container_name: businessc
hostname: Business_C
build:
context: ./BusinessProjectA
dockerfile: Dockerfile
ports:
- 83:80
environment:
TZ: "Asia/Shanghai"
ASPNETCORE_ENVIRONMENT: "Production"
networks:
- dev
- pro
d:
container_name: businessd
hostname: Business_D
build:
context: ./Yak.Docker.Test
dockerfile: Dockerfile
ports:
- 84:80
environment:
TZ: "Asia/Shanghai"
ASPNETCORE_ENVIRONMENT: "Production"
networks:
- dev
- pro
e:
container_name: businesse
hostname: Business_E
build:
context: ./Yak.DockerCompose.Api
dockerfile: Dockerfile
ports:
- 85:80
environment:
TZ: "Asia/Shanghai"
ASPNETCORE_ENVIRONMENT: "Production"
networks:
- dev
- pro
depends_on:
- db
reverse-proxy:
container_name: api.proxy
image: nginx
depends_on:
- gateway
ports:
- "9090:8080"
links:
- gateway
restart: always
volumes:
- ./nginx/proxy.conf:/etc/nginx/conf.d/default.conf
networks:
- dev
networks:
dev:
driver: bridge
pro:
driver: bridge
编写 proxy.conf 文件
server {
listen 8080;
location / {
proxy_pass http://gateway:80;
}
}
拷贝到服务器中

启动 docker-compose
|
1
|
docker-compose up -d --build |

http://192.168.192.141:9090/user/User/Get
测试

http://192.168.192.141:9090/weather/WeatherForecast

http://192.168.192.141:9090/business/Server/GetServerName

鸣谢:
微服务架构Consul集群、Ocelot网关集群和Nginx版本实现
基于Docker+Consul+Ocelot+Nginx搭建微服务架构
docker-compose .netcoreapi、mysql、nginx多容器部署
https://www.cnblogs.com/lsxqw2004/p/6709766.html#_label4
https://www.cnblogs.com/chenug/p/6916639.html
本文来自博客园,作者:{春光牛牛,yak},转载请注明原文链接:https://www.cnblogs.com/yakniu/p/16309523.html
欢迎各位大佬们评论指正
QQ讨论群:610129902


浙公网安备 33010602011771号