Docker-Compose一键部署Ningx+Asp.net core站点+Redis

简介: 生产环境更新追求快速平稳,Docker-Compose 通过一个配置文件来管理多个Docker容器,在配置文件中services来定义,然后使用脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器的应用场景,实现环境的快速搭建。

生产环境更新追求快速平稳,Docker-Compose 通过一个配置文件来管理多个Docker容器,在配置文件中services来定义,然后使用脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器的应用场景,实现环境的快速搭建。

1.创建asp.net core示例站点

使用vs2017创建一个Asp.net core MVC站点,引入Redis,主要是为了实现分布式缓存,实现一些演示内容。然后编写dockerfile,创建站点镜像,这些过程有很多参考资料,这里不再赘述。

2.创建docker-compose.yml文件
文件内容如下,创建了两个web站点容器,连接redis容器。 nginx对外暴露端口80,可以访问web1和web2,修改nginx配置,反向代理,分发请求到两个web应用,nginx配置参考3


version: '3'

services:
   xxx_mvc:
        container_name: web
        image: registry.cn-shenzhen.aliyuncs.com/xxx/web
        environment:
            - ASPNETCORE_ENVIRONMENT=Production 
        expose:
            - 80
        entrypoint: ["dotnet", "XXX.Web.Mvc.dll"]  
        restart: always 
        links:
          - redis
        volumes:
            - "./appsettings.Production.json:/app/appsettings.Production.json"   
   
            
    xxx_mvc_2:
        container_name: web-2
        image: registry.cn-shenzhen.aliyuncs.com/xxx/web 
        environment:
            - ASPNETCORE_ENVIRONMENT=Production 
        expose:
            - 80 
        entrypoint: ["dotnet", "XXX.Web.Mvc.dll"]  
        restart: always 
        links:
          - redis
        volumes:
            - "./appsettings.Production.json:/app/appsettings.Production.json"   
   
 
    nginx:
      container_name:xxx-nginx
      image: nginx
      ports:
        - "8080:80" 
      links:
        - xxx_mvc:web1
        - xxx_mvc_2:web2 
      restart: always
      volumes:
        - "./nginx-about/nginx.conf:/etc/nginx/nginx.conf:ro"
  
   
    redis:
      image: redis
      restart: always
      expose:
        - 6379
    

3.Nginx配置文件

upstream web{
    ip_hash; 
    server web1:80; #1号  
    server web2:80; #2号 
}

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         http://web;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

4.执行docker-compose up 命令
连接服务器,新建目录上传相关文件后,在目录中执行docker-compose up ,命令成功将自动完成包括服务的创建和启动, 顺利的话,访问 http://xxx:8080就可以看到站点页面了。

祝好运:)

目录
相关文章
|
开发框架 .NET Docker
.NET Core项目部署到Windows系统Docker
.NET Core项目部署到Windows系统Docker
756 2
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
1439 8
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
427 5
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
881 1
|
开发框架 .NET API
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
1574 3
|
存储 NoSQL Redis
【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
293 0
【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
|
存储 NoSQL Redis
【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://github.com/LuBu0505/redis-copy-net8
293 1
|
NoSQL 大数据 Redis
分享5款.NET开源免费的Redis客户端组件库
分享5款.NET开源免费的Redis客户端组件库
483 1
|
开发框架 监控 .NET
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
294 0
|
开发框架 .NET Linux
【.NET Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
该文介绍了如何不使用VS2019手动创建ASP.NET Core Blazor项目的Dockerfile并构建Docker镜像。首先,创建名为Dockerfile的文件,并复制提供的Dockerfile内容,该文件指定了基础镜像和工作目录。然后,通过CMD在项目目录下运行`docker build -t 自定义镜像名 .`来生成镜像。最后,使用`docker run`命令启动容器并验证项目运行。此外,文章还提到了将镜像推送到Azure Container Registry (ACR)的步骤。
990 0