Docker的好处我就不说啦,问问度娘就知道了??
在动手之前我假设您已经安装了Docker(Linux环境)
准备好一个web api项目,如果您还不知道怎样用vs建web api项目,请看此篇博客
https://www.cnblogs.com/zhangnever/p/11915509.html
如果还没安装Docker请先别急,移步至此地址安装
https://www.runoob.com/docker/centos-docker-install.html
在这里先说几条Docker的命令,因为一会儿会用到
1.docker ps -a --查看所有的容器 2.docker ps --查看正在运行的容器 3.docker images --查看所有的镜像 4.docker logs 容器id --查看指定容器的日志
5.docker pull 镜像名 --拉取指定镜像
首先在Program类添加如下代码,UseUrls方法设置ip和端口号(可不和我一样),这样的话发布之后外网就可对其进行访问。一定要加上这句代码!!!
.UseUrls("http://*:9659")
然后右键-属性发布项目
进入发布后的文件夹,将发布后的所有文件copy出来,上传至Linux服务器,我用的是Xftp,在此之前在tmp目录下新建一个文件夹(名称随意)
然后将xml文件copy进来,不然发布会报错。xml文件找不到
打开Linux命令行终端工具,我用的是Xshell.切换到项目根目录下,Vim创建Dockerfile文件,当然你也可以右键新建文件也行
写入这四句命令
FROM microsoft/dotnet:2.2-aspnetcore-runtime WORKDIR /app EXPOSE 9659 COPY . . CMD ["dotnet", "CoreFrame.dll"]
然后拉取镜像,我这是.net core 2.2的项目,依据你的项目版本来
docker pull microsoft/dotnet:2.2-aspnetcore-runtime
我这边已经拉取过了,所以会提示我,已经存在最新的microsoft/dotnet:2.2-aspnetcore-runtime,你要稍微等个几分钟...
拉取完成之后你可以用docker images命令看看有没有这个镜像
[root@instance-1epqf1sp core]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/microsoft/dotnet 2.2-aspnetcore-runtime 594143f47344 2 weeks ago 261 MB
接下来执行下面这条命令,创建我们的项目镜像,"."代表使用当前目录下的Dockerfile创建镜像
docker build -t apiproject .
再使用docker images命令看看是否创建
[root@instance-1epqf1sp core]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE apiproject latest f0036423060a About a minute ago 301 MB docker.io/microsoft/dotnet 2.2-aspnetcore-runtime 594143f47344 2 weeks ago 261 MB
无误后执行下面这条命令,启动容器,成功之后会有一长串字符
docker run -d -p 9659:9659 --name corewebapi apiproject
--corewebapi是容器名称
--apiproject是依赖的镜像
查看运行的容器
浏览器中就可以打开swagger文档了
如果容器没有运行的话,要查看错误日志,看看报的什么错,再解决。如果你按照我写的步骤来的话应该不会报错。??
晚安!??