隐藏

使用Docker发布C# .NETCore WebApi容器至服务器

发布:2023/10/9 1:08:34作者:管理员 来源:本站 浏览次数:612

目录


一、启用Docker支持


二、制作发布容器


方式一、将容器发布至docker hub


1、发布运用程序


2、服务器拉取镜像,运行WebApi容器


方式二、使用docker build构建本地镜像


一、启用Docker支持


如果我们使用vs2022新建WebApi项目的时候需要勾选 启用Docker :


如果没有勾选或者使用VS019创建的项目,可以在项目右键 添加 docker支持


二、制作发布容器

方式一、将容器发布至docker hub

1、发布运用程序


接下来开始发布程序,右键点击项目  发布


提示在哪里发布内容,选择 docker容器注册表:


选择 docker hub 将应用程序作为docker映像发布到docker hub


输入对应的docker账号密码,你需要注册有docker hub的账号,关于docker hub可以参考官网:Docker Hub


完成后可以看到自己的docker hub 存储库地址,点击 发布,发布的时候必须要先运行本地 docker,不然会报错


提示已经发布成功:


2、服务器拉取镜像,运行WebApi容器


登录服务器,打开命令提示符,看下能不能在docker hub上搜索到自己的镜像:


   docker search lwpoor/mywebapi


# lwpoor/mywebapi 为你自己的镜像名称


可以看到镜像已经存在了


通过 pull 拉取镜像:


   docker pull lwpoor/mywebapi


查看拉取到的镜像:


   docker images


接下来开始运行WebApi容器,输入以下代码运行容器:


   docker run -d -p 8888:5050 --name webapi --restart=always lwpoor/mywebapi


# -d 表示后台运行


# -p 8888:5050 表示容器的5050端口映射到服务器的8888端口(5050是webapi配置的http端口)


# --name webapi 给容器起一个名字 webapi


# --restart=always 容器随系统开机启动


启动成功,浏览器打开连接:http://localhost:8888/api/admin/login?pwd=123456


WebApi成功发布到服务器!


方式二、使用docker build构建本地镜像


有的小伙伴可能不想把镜像发布到 docker hub 上面,只想在本地构建好镜像直接运行就行,这样就可以使用 docker build 命令来构建。


使用docker build构建镜像的前提是必须要生成对应的 Dockerfile 文件,前面说到 启用docker支持 后会自动在项目根目录下面生成 Dockerfile 文件,使用 cmd 命令,切换到和 Dockerfile 同一个目录文件夹下,运行:


   docker build -t myfirstwebapi:1.0 .


-t为指定构建镜像的名字和版本,格式为'name:tag'


最后还有一个 . 是为了让 Docker 到当前本地目录去寻找 Dockerfile 文件,然后将DockerFile同级目录的所有东西打tar包发送到服务器上,最后利用DockerFile中的其他命令来构建一个镜像。



同样使用run运行程序:


docker run -d -p 8888:5050 --name webapi --restart=always myfirstwebapi:1.0

注意带上版本号

需要注意的是我这里用容器的 5050 端口映射到外部 8888 端口,是因为我在webapi配置文件里面指定了http的端口是5050,这里要根据自己webapi程序的实际使用端口来映射。


我试了一下,如果webapi程序配置了支持https,使用docker可能会运行不起来,应为需要ssl证书啥的,配置起来太麻烦,所以我这里就把https关了:


运行容器后:http://localhost:8888/swagger/index.html