ASP.NET CORE做的网站运行在docker实践
用VS2017 建立了 DotNet Core 2.2 的网站后,如何转移到 Docker 下运行?
下面分两种方式来实践: 1、直接手动命今行,将本机目录映射进Docker,运行网站。2、制作 Image ,再启动 Docker 运行。
一、将本机目录映射进Docker,运行网站fil
1. vs中建立ASP.NET CORE网站,类名为WebApplication3. (在创建时,可以勾选上 Docker 。好处是会自动生成 Dockerfile 文件,方便后面抄写命令。)
2. 发布到 e:/app 下。(随便建的发布目录)
3. 先在本地CMD命令行测试一下是否成功,cd e:\app, 再运行docnet WebApplication3.dll
4. 浏览器输入http://localhost:5000 可以访问网站
5. 退出命令行工具,开始进行docker镜像部署,前提是先装好docker,如果映射本地端口是80则记得先把IIS停了(如果你装了IIS的话)
6. 在命令行上先安装 DotNetCore 运行环境:Docker pull microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 和 Docker pull microsoft/dotnet:2.2-sdk-nanoserver-1803
这两个命令行的具本内容,可以在工程自动生成的 Dockerfile 中找到。
如果遇到错误:image operating system "windows" cannot be used on this platform
请将 Docker 切换到windows 模式。
7. 命令行CMD中输入docker命令 docker run -p 8001:80 -v e:/app:c:/wwwroot -w /wwwroot microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 dotnet WebApplication3.dll
解释下上面的命令:运行docker容器,名字叫microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803,这是微软官方的asp.net core镜像,映射本地端口8001到容器内的80端口,把本地目录e:/app 映射为容器里的 C:/wwwroot 目录 , 把容器内的工作目录 设置为 /wwwroot,容器运行起来后再运行命令 dotnet /wwwroot/WebApplication3.dll
请留意 -v 后面目录的写法。
8.在浏览器中输入http://localhost:8001 应该就可以访问网站了,哪怕在命令行中按ctrl+c退出,但是实际上docker容器也是正在运行中,输入命令docker ps 可以看到正在运行的容器。
二、网站制作 Image ,再启动 Docker 运行
1. 在 e:/app 目录下,创建 Dockerfile 文件
FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 EXPOSE 80 EXPOSE 443 FROM microsoft/dotnet:2.2-sdk-nanoserver-1803 COPY . . ENTRYPOINT ["dotnet", "WebApplication3.dll"]
2. 在命令行中输入 “docker build -t web3 . ” 创建镜像文件
3. 通过 docker images 可以查看到新建的 web3 镜像。
4. 启动镜像中的网站 docker run --name myWeb -p 9001:80 -d web3
其中 -d 是后台运行的意思。输出一串编码,表示已经运行了。
5. 在浏览器中输入http://localhost:9001 应该就可以访问网站了。
6. 常用调试命令 docker ps 列出当前正在运行的 container , 还有 docker logs <container-id> 查看程序运行的log信息。
删除 container 和 删除 image 也常用到。
三、参考文章
了解用于 Linux 和 Windows 容器的 Docker “容器主机”与“容器操作系统”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)