docker部署netcore webapi时,修改默认端口80为5000

在window下调试部署netcore webapi时,看到的端口常是默认的5000或5001,当然我们可以在代码中或者launchSetting或者启动参数中修改端口。当使用docker部署时,默认端口却是【80】,这一点容易照成初学者在这里绕晕圈。

现记录测试修改的过程(非CI/CD):

1.安装docker环境

    略

2.生成Dockerfile文件

点击webapi所在项目右键点击添加--Docker支持,会生成默认Dockerfile

3.去掉自动生成的Dockerfile默认的配置,修改成以下内容

说明:

WORKDIR /app #进入当前容器中的工作目录(不要疑惑怎么创建,理解为自动创建并进入该目录)

EXPOSE 5000 #显示说明该容器暴露的端口,与生成容器无关

COPY zyhand.webapi .   #复制当前宿主目录下文件到容器中,使用宿主的相对路径,后面的“点号”不能少,点号表示上面使用WORKDIR进入的容器目录

ENV ASPNETCORE_URLS=http://+:5000  #要自定义的端口,为什么是这样的修改,下面会有分析过程

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 5000

COPY zyhand.webapi .
ENV ASPNETCORE_URLS=http://+:5000
ENTRYPOINT ["dotnet", "ZYHand.WebAPI.dll","--server.urls","http://*:5000"]

4.把发布后的源码上传到宿主机上,使用xftp上传至/publish/zyhand.webapi目录下

5.把Docker文件上传到宿主机上,上传至/publish目录下,与zyhand.webapi同级

6.切换至宿主机的/publish目录,生成镜像。

(netcore镜像pull:略)

说明:点号不能少,指定在当前目录查找Dockerfile文件生成镜像

docker build -t web1 .

生成后看到如下说明成功:

通过命令,看到有web1的镜像也说明创建成功

Docker images

7.创建容器并启动

docker run -i -t -d -p 8080:5000 --name=my-web1-1 web1 /bin/bash

8.访问链接,根据自己的代码链接不同

在宿主机中访问你自定义的链接,根据自己的代码不同:curl http://192.168.0.238:8080/api/user/userinfo?userid=1 返回正确说明成功

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

附分析为什么是默认80端口

查看依赖镜像的Dockerfile

 docker history --no-trunc mcr.microsoft.com/dotnet/core/aspnet:3.1

通过以上命令查看发现有指定80端口,所以在我们自己的Dockerfile中覆盖即可。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值