如何将dotnet core webapi发布到docker中
今天想起来撸一下docker,中途还是遇到些问题,但是这些问题都是由于路径什么的导致不正确,在这儿还是记录下操作过程,今天是基于windows来操作docker,先把windows搞定,后面再去Linux上搞docker。
1、前提条件
- Win10系统,不能是家庭版,并且需要开启Hyper-V
- 官网下载并安装:docker desktop for window
- 注册一个docker hub的账号,用于后面可以把镜像推送到在线仓库中
- 本地dotnet core开发环境
2、安装docker
- 下载docker desktop后直接根据提示进行安装
- 安装完成之后,打开CMD命令框,输入docker --version 能看到版本号就说明安装成功了
- 登录dockerhub账号:docker login回车根据提示输入你的账号密码即可
- cmd输入:docker run hello-world 拉取镜像并且运行一个容器
- cmd输入:docker image ls 查看镜像列表
- cmd输入:docker container ls 查看运行的容器列表
- CMD输入:**docker --help** 可以查看docker命令的帮助信息
3、创建WebApi,编译发布到指定目录
4、在WebApi发布目录中建立DockerFile文件,添加如下内容
# 基于microsoft/dotnet:latest构建Docker Image
# FROM microsoft/dotnet:latest
# FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1903
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1903
# 将publish下的所有文件拷贝到工作目录
COPY *.* ./
# 端口
EXPOSE 5000
# 启动webapi
CMD ["dotnet", "WebApi.dll"]
5、CMD进入WebApi发布目录,构建WebApi镜像,并启动容器
- CMD输入命令:docker image build -t yazid2020/test_webapi:1.0.1 .
- 启动容器:docker run -it -p 8089:5000 yazid2020/test_webapi:1.0.1
- 然后去访问接口,能看到已经能得到响应了
6、将镜像推送到docker hub中
- 在docker hub中先建立一个Repository镜像仓储【yazid2020/test_webapi】
- 将镜像推送到仓储:docker push yazid2020/test_webapi:1.0.1,这里可能会提示未登录,使用docker login登录即可
- 到这里就完成了将core webapi发布到docker中,并且将镜像推送到在线仓储,以后再次使用这个镜像时,直接拉取运行即可
docker pull yazid2020/test_webapi:1.0.1
docker run -it -p 8089:5000 yazid2020/test_webapi:1.0.1
# -it:表示需要提供一个模拟的shell环境
# -p 8089:5000:表示将DockerContainer的5000端口映射到主机环境的8089端口
不完善,或者还可以改进的地方可以给我留言,感谢!