Docker实战:使用Dockerfile部署第一个netcore程序

news2024/11/19 17:20:35

目录

1、创建一个NetCore API项目

2、云服务部署

2.1 首先登录云服务器创建一个测试目录

2.2 新建dockerfile文件用来构建镜像。

2.3 构建镜像

2.4 运行镜像


目录

1、创建一个NetCore API项目

2、云服务部署

2.1 首先登录云服务器创建一个测试目录

2.2 新建dockerfile文件用来构建镜像。

2.3 构建镜像

2.4 运行镜像

因为我是从事了五年C#工作的开发,虽然最近不怎么用C#了,为了后续能用得上,简单整理了一下使用dockerfile来部署一个非常微软最基本的netcore api项目,亲测成功,感兴趣的朋友也可以学习一下。

1、创建一个NetCore API项目

首先创建一个netcore的api项目因为比较简单就不介绍,这个可以直接留言获取。

2、云服务部署

2.1 首先登录云服务器创建一个测试目录

mkdir /home/netCoreDemo/webapp

使用Linux的ftp工具将Visualstudio发布好的部署包上传到云服务器的/home/netCoreDemo/webapp目录中去,

2.2 新建dockerfile文件用来构建镜像。

内容如下

# 添加基础镜像:docker会从网络下载这个镜像
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
ENV ASPNETCORE_URLS=http://+:28080  #解决下面报错的问题
#容器中系统的工作空间
WORKDIR /webapp
#拷贝当前文件夹下的文件到容器中系统的工作空间(注意:“.”后面有空格)
COPY . /webapp 
#设置Docker容器对外暴露的端口
EXPOSE 28080
#容器中使用 ["dotnet","系统启动的dll"] 来运行应用程序
#使用ENTRYPOINT ["dotnet","系统启动的dll"]
#也可以使用 CMD ["dotnet","系统启动的dll"]推荐使用ENTRYPOINT 
ENTRYPOINT ["dotnet", "test.dll"]

2.3 构建镜像

当前dockerfile目录执行构建镜像命令

build -f dockerfile -t xm/netcoredemo:1.0 .

2.4 运行镜像

启动运行镜像,推荐增加 -d参数 后台启动

 docker run --name netcoredemo -p 28080:28080 xm/netcoredemo:1.0

后台启动命令

 docker run -d --name netcoredemo -p 28080:28080 xm/netcoredemo:1.0

服务器直接内网测试接口是否正常

 curl http://127.0.0.1:28080/weatherforecast

外网访问测试准备条件

确保你的云服务器外网端口开放

防火墙也要注意开放28080端口或者关闭防火墙

浏览器访问:

http://你的公网IP:28080/weatherforecast

删除容器,需要先停止容器,然后再删除

docker stop  netcoredemo #先停止
docker rm netcoredemo #删除容器


删除镜像

docker rmi  xm/netcoredemo:1.0


部署可能遇到的问题 on the IPv6 loopback interface: 'Cannot assign requested address'

解决方案:

dockerfile增加这一行配置,因为这边只是单纯测试目的,不考虑使用nginx做代理。

ENV ASPNETCORE_URLS=http://+:28080  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python3,10h行代码,制作艺术签名,从此走上人生巅峰。

制作艺术签名1、引言2、代码实战2.1 代码示例3、总结1、引言 小鱼:小屌丝,你在画啥呢? 小屌丝:… 我这在练习签名呢。 小鱼:这… 艺术签? 小屌丝:喔,鱼哥,你这真实博才多…

CSDN云IDE怎样克隆代码

文章目录1、怎样从GitHub导入项目?1.1、系统生成SSH-KEY2、克隆代码2.1、克隆代码方式一2.2、克隆代码方式二2.3、克隆代码方式三1、怎样从GitHub导入项目? 1.1、系统生成SSH-KEY 1、打开Terminal 2、查看是否存在现有的ssh密钥 $ ls -al ~/.ssh3、检…

【LeetCode】【二叉树的最近公共祖先】

力扣 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自…

《JavaSE-第十四章》之文件(一)

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 刷题求职神器 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水…

Go 语言中的并发编程(Let‘s Go 二十八)

Go从底层就支持并发编程,同时实现垃圾回收机制。 先了解并发相关的几个名词概念。 进程:系统进行资源分配和调度的基本单位,使系统结构的基础,它是一个实体。 线程:是程序中一个单一的顺序执行流程,是进程…

python做了个自动关机工具,再也不会耽误我下班啦

上班族经常会遇到这样情况,着急下班结果将关机误点成重启,或者临近下班又通知开会,开完会已经迟了还要去给电脑关机。 【阅读全文】 今天使用PyQt5做了个自动关机的小工具,设置好关机时间然后直接提交即可,下班就可以…

什么是JWT及在JAVA中如何使用?

目录 1、为什么使用JWT? 2、JWT 的 格式 3、使用 JWT 就绝对安全 吗? 4、JWT 的 鉴权 流程 5、JWT 入门案例 5.1 引入依赖 5.2 生成Token 5.3 解析Token 5.4 工具类 JSON Web token简称JWT, 是用于对应用程序上的用户进行身份验证的标记。 也就…

测试中台初始设置

1.0 测试资源池 存在测试资源之后,将测试资源进行统一的管理,针对不同的测试场景和目的来定义不同的测试环境。将测试资源进行组合,测试平台可以对测试资源池进行统一的功能。 2.0 可用性测试及冒烟测试 可用性测试和冒烟测试都是快速验证…

基于Ubuntu搭建CTFd平台(全网最全)

前言: 最近在看《CTF安全竞赛入门》这本书,里面提到了搭建CTFd平台用于练习,学者可以在本地虚拟机上搭建。 所需系统:Ubuntu20.04 怎么安装虚拟机和配置Ubuntu这里就不再赘述了。 记得给Ubuntu配置VM tools1,方便把w…

软考中级(软件设计师)——面向对象程序设计(C++Java二选一的题15分-目标3分)

软考中级(软件设计师)——面向对象程序设计(C&Java二选一的题15分-目标3分) 目录 软考中级(软件设计师)——面向对象程序设计(C&Java二选一的题15分-目标3分) C语法要点 C类的定义: C派生类的定义: C类的外定义函数: C虚函数与…

Python Flask框架-开发简单博客-开篇介绍

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他拥有的,而不是他会的。所以可以不学无数,但不能一无所有! 技术领域:WEB安全、网络攻防 关…

PHP基础学习第十六篇(了解数组、创建数组、数组排序、总结数组的使用)

一、什么是数组 数组是一个能在单个变量中存储多个值的特殊变量。 如果有一个项目清单(例如:序号名单),将其存储到单个变量中,如下所示: $a1;$b2;$c3; 然而,如果想要遍历数组并找出特定的一…

School assignment

目录 一、常用控制类汇编指令 二、编程实现统计寄存器AX中“1”和“0”的个数 三、编程实现从键盘输入10个1位整数 四、编程实现从键盘输入两个10进制的2位整数的和 五、编写程序练习直接、间接、相对、基址变址寻址 一、常用控制类汇编指令 MOV 传送字或字节. MOVSX 先…

JVM虚拟机

"天下事有难易乎?为之则易,不为则难" 一、初识JVM JVM是一个跨语言的平台,为那些能够跨平台运行的程序提供一个平台,JVM本身与java语言没有必然的联系,它只与特定的二进制文件格式.class文件所关联&#xff…

人生重开模拟器(Python实现)

文章目录人生重开模拟器介绍代码实现打印初始界面设置初始属性设置角色性别设置角色出生点针对每一岁,生成人生经历人生重开模拟器介绍 人生重开模拟器是由VickScarlet上传至GitHub的一款简单的文字网页游戏。 玩家点击“立即重开”并设置角色的初始属性后&#xf…

HTML 学习总结

超级详细的 HTML 学习笔记,一篇入门系列!!耐心读一遍 复习必备!! 目录 简要 认识标签 基本结构 常见标签 1. 注释 ---> ctrl / 2. 标题标签 ---> h1 h2 h3 h4 h5 h6 3. 段落标签 ---> p 4. 换行 ---> br …

Git | 一文带你零基础快速上手Git

👑 博主简介:    🥇 Java领域新星创作者    🥇 阿里云开发者社区专家博主、星级博主、技术博主 🤝 交流社区:BoBooY(优质编程学习笔记社区) 前言:本文适合零基础小白…

Docker

目录1、docker介绍1.1 docker是什么1.2 容器与虚拟机的比较2、docker安装2.1 docker 基本组成2.2 安装步骤2.3 阿里云镜像加速2.4 run干了什么3、docker常用命令3.1 帮助命令及启动命令3.2 镜像命令3.3 容器命令4、Docker镜像4.1 镜像是什么?4.2 分层镜像 UnionFS 联…

时间复杂度和空间复杂度

文章目录一、算法的复杂度二、时间复杂度1.时间复杂度概念2.大O的渐进表示法3.常见时间复杂度计算举例3.1 实例1 【 O(N)】3.2 实例2 【O(NM)】3.3 实例3 【O(1)】3.4 实例4 【O(N)】3.5 实例5 【O(N^2)】3.6 实例6 【O(logN)】3.7 实例7 【O(N)】3.8 实例8【O(2^N)】三、空间复…

新的3D地图制图技术改变了全球定位的游戏规则

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 在人类技术发展的历史长河…