手机版

使用docker-compose构建AspNetCore开发环境

时间:2021-09-04 来源:互联网 编辑:宝哥软件园 浏览:

使用docker-compose构建ASP.NET核心开发环境

1使用docker-compose构建开发环境

我们的目标很简单:使用docker-compose来组合几个docker容器。

首先用Nginx代理所有Web程序,这样主机上只需要监控一个端口,主机不受污染。然后结合Web程序,Redis/Memcached和SqlServerOnLinux。创建一个新的目录站点,所有与集群相关的都放在这里,目录结构如下

sites nginx sites-启用默认docker file redis docker file redis . conf docker-compose . yml

创建一个新的docker-compose.yml

版本: '2 '服务: redis: build:/redis/restart : always container _ name : MAC-redis identity : build : ~/identity/src/Web/# identity项目的Dockerfile所在的目录是restart : always volumes 3360-~/identity/src/Web/bin/debug/netcore app 1.1/publish :/app #将编译后的序列集添加到数据卷link :-' ucent 3360 API。因此,应该在这里设置一个类似ur的别名,这样身份项目访问` api.ucenter.com '就会被转发到ucenter容器。-redisextra _ hosts :-' dbserver 3360192 . 168 . 199 . 143 ' #之前构建了一个sqlserver容器,单独放在一个Linux机器上,所以这里直接按地址调用,注意打开远程访问。Container _ name :身份记录:驱动程序:' JSON-file '选项: max-size :' 50k' #随着程序运行,日志会越来越多,导致每次加载时间变长,所以指定了日志文件的大小。保存时间max-file : ' 10 ' u enter : build : ~/u center/src/web API # u center项目的Dockerfile目录重启:总是卷3360-~/u center/src/web API/bin/Debug/netcoreapp 1.1/publish :/app link 3360-redis extra _ hosts 3360-' dbserver :192 . 168 . 1999999999/nginx #重启:总是端口3360-'80:80' #,nginx的Dockerfile所在的端口监听主机的端口80。或者其他端口可以放在数据卷中,配置文件为link :-identity-UC entry volumes :-。/nginx/支持站点的3360/etc/nginx/支持站点的# nginx。将来需要更改时,可以重新启动nginx。不需要重建各个项目共享的-/webcommon:/www/data #静态文件,一般都要经过cdn。在开发环境中,在nginx agent container _ name : nginx-host logging : driver 3360 ' JSON-file ' options : max-size : ' 50k ' max-file 3360 ' 10 '上的集群中配置了四个服务,其中一个nginx负责监控主机的80个端口并转发给对应的服务Identity是我开发的一个项目,依赖于ucenter项目。所有项目都依赖redis缓存,并且有一个由主机解析的数据库服务dbserver。

2让我们首先构建nginx服务

在站点-nginx目录下,创建一个新的站点启用目录,并创建一个名为default的新配置文件

服务器{ listen 80服务器名account.xxx.com;#身份项目/{proxy _ passhttp://身份的域名位置;#转发到身份服务以处理proxy _ set _ header Host $ hostproxy _ set _ header _ X-forward-For $ proxy _ add _ X _ forward _ For;proxy _ connect _ timeout 150proxy _ send _ timeout 100proxy _ read _ timeout 100proxy _ buffers 4 32kclient _ max _ body _ size 8mclient _ body _ buffer _ size 128} }服务器{ listen 80服务器名ucenter.xxx.com;# u center项目的域名位置/{ proxy _ pass http://u center;#转发到导入服务以处理proxy _ set _ header Host $ hostproxy _ set _ header _ X-forward-For $ proxy _ add _ X _ forward _ For;proxy _ connect _ timeout 150proxy _ send _ timeout 100proxy _ read _ timeout 100proxy _ buffers 4 32kclient _ max _ body _ size 8mclient _ body _ buffer _ size 128} }服务器{ listen 80服务器名cdn.xxx.com;#这里,将静态文件打包到一个服务中,而不是cdn root/www/data;Location/{}}是nginx的配置文件,主要配置Nginx的代理模式。编写Dockerfile以在下面生成Nginx,并在sites-nginx下创建一个新的Dockerfile

从tutum/Nginx卷/etc/nginx/sites启用的Nginx可以通过此Dockerfile创建。

3安装redis

1).在站点下创建一个新目录:mkdir redis

2).vim Dockerfile

from redis copy redis . conf/usr/local/etc/redis/redis . conf cmd[' redis-server ','/usr/local/etc/redis/redis . conf ']3)。vim redis.conf复制并粘贴redis的配置,这是redis的官方默认配置。

4).docker构建-t mac-redis。我把它命名为mac-redis

5)映像创建后,先测试是否可以使用,docker run-d-name-MAC-redis MAC-redis。此时,mac-redis的容器已经在后台开始运行,所以我们将用redis-cli测试这个redis服务,docker run-it-link MAC-redis 3360 redis-RM redis-CLI-h redis-p 6379使用-RM参数,完成后清除这个容器。测试如下:

Redis :6379 SET KEY 1 VALUE 1 OK Redis :6379 GET KEY 1 ' VALUE 1 '似乎Redis服务正常,退出退出。然后,用于测试的redis服务容器也被从docker rm -f mac-redis中删除。

4用docker运行aspnetcore程序

这是最简单的,跟着微软的镜像走就行了,花园里教程多的是。

我把它们放在这里的集群中,只需在docker-compose.yml中配置每个aspnetcore程序的Dockerfile所在的路径,它在我们的yml文件中是可用的

Build: ~/identity/src/web/

来自Microsoft/aspnet core :1.1.1标签名=identity version=0 . 0 . 1 env aspnet core _ environment开发入口点['dotnet ',' identity.web.dll']如果有多个dockerfile,可以在yml中指定docker file的名称。

另一个目录的文件如下:

来自Microsoft/aspnet core :1 . 1 . 1标签名=u center version=0 . 0 . 1 entrypoint[' dotnet ',' ucenter.webapi.dll']代码被修改,dotnet publish docker restart XXX(XXX是容器的名称)生效。

使用chrome浏览器访问

最后,进入站点目录,docker-compose启动集群。因为nginx监控主机的端口80,所以有必要将绑定的url指向主机的端口80。一种方法是直接在hosts中解析它,但不建议这样做,因为如果要访问在线项目,就必须更改hosts。为了不污染主机环境,建议使用chrome浏览器。chrome具有多用户功能,因此创建一个新用户,使用SwitchyOmega插件,并将所需的URl代理到主机的端口80。这样,在未来开发中使用chrome的用户就可以在完全不影响主机环境的情况下做到。

在开发过程中,调试是一个必不可少的要求,所以下一章介绍如何在Docker中用VSCode进行调试。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:使用docker-compose构建AspNetCore开发环境是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。