准备工作:安装Docker并运行
一,在Docker中调试Asp.net core应用
1,右键项目,添加/Docker支持,项目根目录多自动新增一个名为Dockfile的文件
2,按F5进行高度,首次运行这个过程很漫长,还很有可能不成功,提示信息:C:\Users\Administrator\vsdbg\vs2017u5 exists, deleting,可以如下解决
按提示中的版本到以下地址下载两个文件
https://vsdebugger.azureedge.net/vsdbg-16-3-10904-1/vsdbg-linux-x64.zip
https://vsdebugger.azureedge.net/vsdbg-16-3-10904-1/vsdbg-linux-musl-x64.zip
,把版本号换成使用的版本号。
不过这和在VS中下载一个样,慢得不行,我下好了“16.3.10904.1”版本在以下云盘,需要的自行提取,提取码:2z1p
https://pan.baidu.com/s/1TSXG0GSbTe8iD5OFXMskaw
下好以后,把vsdbg-linux-x64中的所有文件复制到C:\Users\Administrator\vsdbg\vs2017u5目录。在vs2017u5目录中新建一个子文件夹:linux-musl-x64,把vsdbg-linux-musl-x64中的所有文件复制到该目录。
在linux-musl-x64目录中新建二个txt文件:success_rid.txt以及success_version.txt,编辑success_rid.txt内容为:linux-musl-x64,编辑success_version.txt内容为使用的版本号:16.3.10904.1。
把这两个txt文件复制一份到vs2017u5目录,修改vs2017u5目录中的success_rid.txt内容为:linux-x64。
重新启动调试即可。
二,发布Asp.net core程序到Docker.
1,打开一个命令行,利用docker build指令创建镜像
docker build -t liu:v1 --force-rm -f E:/identity/src\IdentityServer/Dockerfile E:/identity
参数说明:
-t:-tag 设置镜像标签,可以用来指定镜像版本。
--force--rm:强制删除临时镜像
-f:指定Dockfile文件地址
E:/identity:上下文根目录,此处为解决方案目录(sln存在目录)
2,以此镜像运行一个容器
使用Docker images 指定查询镜像ID
使用Docker run指令运行一个容器
docker run -v c:\vol:/app/wwwroot/upload -p 5005:80 -it bea955806474 bash
参数说明:
-v: -volum,挂载本地目录到Docker容器。 c:\vol为本地目录,/app/wwwroot/upload为容器目录。由于容器本身不会持久化存储数据,必需挂载到本地目录,以防容器删除后数据丢失。
-p:端口映射。5005为本机端口,80为容器端口
-it:-input-terminal。开启一个新的输入终端。
bea955806474:镜像ID
bash:运行的容器指令,如果Dockerfile没有指定ENTRYPOINT则直接执行该指令,如果有指定,则将该指定加在ENTRYPOINT后。
run完成后,使用Docker ps指令查看正在运行的容器。直接访问http://localhost:5005即可。