基于net6的asp.net core webapi项目打包为docker镜像,并推送至私有镜像仓库harbor中

news2024/12/23 1:22:32

基于net6的asp.net core webapi项目打包为docker镜像,并推送至私有镜像仓库harbor中

  • 0、环境说明
  • 1、打包步骤
    • 1.1 创建Asp.net core WebApi项目
    • 1.2 在Asp.net core WebApi项目根目录下创建Dockerfile文件
    • 1.3 在子系统Ubuntu20.04.4中通过docker build生成docker镜像
    • 1.4 通过docker push把生成的docker镜像推送至私有镜像仓库
  • 2、测试镜像

0、环境说明

开发用操作系统:Windows11家庭中文版,启用了WSL2,并安装了子系统Ubuntu20.04.4
开发工具:Micrososft Visual Studio 2022
子系统(Ubuntu20.04.4):
安装了docker 24.0.7

1、打包步骤

1.1 创建Asp.net core WebApi项目

我这里已经创建好了一个项目,如下图:
在这里插入图片描述
其中Src/Wongoing.Main.API为入口项目,即Asp.Net core webapi项目。

1.2 在Asp.net core WebApi项目根目录下创建Dockerfile文件

我们在Src/Wongoing.Main.API项目下创建Dockerfile文件,内容如下:

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80

FROM base AS final
WORKDIR /app
COPY bin/Release/net6.0/publish/ .
ENTRYPOINT ["dotnet", "Wongoing.Main.API.dll"]

第1行指定基础镜像
第2行指定工作目录
第3行指定开放的端口
第4行指定asp.net core站点端口,要与第3行开放的端口一致
第6行指定镜像别名
第7行指定工作目录
第8行说明把本机bin/Release/net6.0/publish/目录下的所有内容复制到镜像系统的工作目录/app下
第9行说明执行命令dotnet Wongoing.Main.API.dll

从第8行可以看出我们需要向生成并发布一下这个WebApi站点,并且发布的目录为bin/Release/net6.0/publish/,bin目录向与Dockerfile同级,都在Src/Wongoing.Main.API目录下。

1.3 在子系统Ubuntu20.04.4中通过docker build生成docker镜像

1、先进入子系统(Ubuntu20.04.4),如下图:
在这里插入图片描述
2、点击开始菜单的开始屏幕中的Ubuntu 20.04.6LTS,进入子系统,如下图:
在这里插入图片描述
3、通过sudo -i命令切换至管理员权限,如下图:
在这里插入图片描述
4、启动docker,并查看版本,如下图:
在这里插入图片描述
5、docker登录到私有镜像仓库harbor中如下图:
在这里插入图片描述
6、在子系统中切换当前目录至Dockerfile所在目录,如下图:
在这里插入图片描述
7、通过docker build命令生成docker镜像
命令如下:

docker build -t hub.coding123.cn:4443/wongoing/mainapi:1.0 .

docker build -t 私有镜像仓库地址:端口号/项目名称/镜像名称:标签
注意:最后有个点

如下图:
在这里插入图片描述
8、通过docker images查看生成的镜像,如下图:
在这里插入图片描述

1.4 通过docker push把生成的docker镜像推送至私有镜像仓库

1、通过docker push命令把上面生成的镜像推送至私有镜像仓库,命令如下:

docker push hub.coding123.cn:4443/wongoing/mainapi:1.0

执行过程如下图:
在这里插入图片描述
由于网络速度问题,执行时可能需要等一会儿才能执行完毕。
2、登录私有镜像仓库查看是否已有镜像,如下图:

在这里插入图片描述

2、测试镜像

1、在子系统Ubuntu20.04.4中,通过docker run启动上面生成的镜像容器。
命令如下:

docker run -d --name mainapi -p 8021:80 hub.coding123.cn:4443/wongoing/mainapi:1.0

执行如下图:
在这里插入图片描述
2、通过docker ps查看已运行的docker容器,如下图:
在这里插入图片描述

3、在本机系统打开浏览器,在地址栏输入http://localhost:8021/swagger/index.html,进行测试。执行如下图:
在这里插入图片描述
说明:我们制作的docker镜像是正常的。

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

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

相关文章

资源分享:GIS插件-海怪工具箱(附下载链接)

工具详情: ArcGIS海怪工具箱,可直接在ArcGIS中安装使用。 功能: 1、按属性编码:根据字段编码,相同的字段值同一个编码,然后依次升序。 可以手动指定编码样式,比如输入1,那么后续编…

three.js实现旋转棱锥效果

three.js实现旋转棱锥效果 图例 步骤 创建一个四面棱锥添加贴图render函数中旋转&#xff0c;修改高度 代码 <template><div class"app"><div ref"canvesRef" class"canvas-wrap"></div></div> </template…

Python——欢迎来到吱昂张游乐园

欢迎来到吱昂张游乐园&#xff01;&#xff01;&#xff01; 凡是身高小于120或者您的vip等级大于三级的皆可免费游玩。 那我们接下来就来设计一下以上的规则叭 print("欢迎来到吱昂张游乐园") if int(input("输入您的身高&#xff1a;"))>120:print…

Python print 高阶玩法

Python print 高阶玩法 当涉及到在Python中使用print函数时&#xff0c;有许多方式可以玩转文本样式、字体和颜色。在此将深入探讨这些主题&#xff0c;并介绍一些print函数的高级用法。 1. 基本的文本样式与颜色设置 使用ANSI转义码 ANSI转义码是一种用于在终端&#xff0…

62.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏公告类的C++还原

内容来源于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;游戏红字公告功能的逆向分析-CSDN博客 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;0888e34878d9e7dd0acd08ef…

HarmonOS 日期选择组件(DatePicker)

本文 我们一起来看基础组件中的 DatePicker 这就是 日程开发中的日期组件 他可以创建一个日期的范围 并创建一个日期的滑动选择器 这里 我们先写一个组件的骨架 Entry Component struct Index {build() {Row() {Column() {}.width(100%)}.height(100%)} }然后 我们先在Column组…

聚道云软件连接器助力某贸易公司实现付款流程自动化

客户介绍&#xff1a; 某贸易公司是一家集进出口贸易、国内贸易、电子商务等业务于一体的综合性贸易企业。公司业务遍及全球多个国家和地区&#xff0c;拥有庞大的供应商网络和采购需求。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 客户痛点&#…

OpenVoice实时语音克隆功能实现

前言 在【OpenVoice本地部署教程与踩坑记录】一文中介绍了OpenVoice的基本概念与&#xff0c;并且完成了项目的安装与运行。官方给的示例和用法中仅包含了文本转TTS再克隆音色的功能&#xff0c;仅能用于TTS场景下的文字朗读。 本文基于官方示例改造&#xff0c;实现了实时采集…

公司新买的BI,和金蝶系统配合太默契了

公司一直都用金蝶系统来实现包括财务管理、供应链管理、人力资源管理等多个方面的资源的合理配置和业务流程的自动化。但到了数据分析这块&#xff0c;金蝶系统就明显力不从心&#xff0c;需要一个专业的数据分析工具来接手。财务经理推荐用奥威BI&#xff0c;说这款BI的一大特…

Windows内存管理(一):Windows性能监视器(PerfMon)

一、什么是性能监视器 什么是性能监视器&#xff1f; (What is Performance Monitor? )很多时候&#xff0c;我们的计算机只是停止响应、意外关闭或行为异常。这种行为可能有多种原因&#xff0c;指出确切原因可能会有很大帮助。Windows有一个名为Performance Monitor的工具&…

Python——数据类型转换

# 将数字类型转换成字符串 num_str str(111) print(type(num_str), num_str) \# 将浮点类型转换成字符串 float_str str(12.34) print(type(float_str), float_str) # 将字符串转变成数字 num int("234") print(type(num)) # 将字符串转变成浮点型 num2 float(&q…

(已解决)踩坑spring-session-data-redis包出现sessionId不一致问题

问题&#xff1a;今天在使用spring-session-data-redis的jar包时&#xff0c;出现了本地使用时sessionId是一致的&#xff0c;线上使用的时候sessionid是不一致的。 在网上查了半天资料&#xff0c;知道是其中这个包 DefaultCookieSerializer 出现了问题&#xff0c;但是里面的…

基于Listener实现在线人数监测的简单案例

一、需求 只要有用户登录到服务器&#xff0c;就记录在线用户1。 二、使用到的Listner介绍 1、HttpSessionListener 监听器 当一个HttpSession刚被创建或者失效&#xff08;invalidate&#xff09;的时候&#xff0c;将会通知HttpSessionListener监听器。 方法声明功能介绍v…

Vscode设置git账户密码(不需要每次都输入)

在Vscode提交项目代码或者拉取代码的时候&#xff0c;如果每次都需要输入git的账户密码&#xff0c;那么就在终端输入&#xff1a; git config --global credential.helper store 命令 然后执行git pull 提示输入用户密码后&#xff0c;就会缓存&#xff1b; ※注&#xff1a;如…

没有货源是不是就没办法在家做抖店?打包发货怎么完成?解答如下

我是王路飞。 有人问了我一个问题&#xff1a;无货源模式的抖店&#xff0c;自己一个人在家里做不了是吧&#xff1f;毕竟打包发货这些问题怎么解决呢&#xff1f; 店铺要是发货不及时被平台罚款怎么办&#xff1f;产品有质量问题怎么解决呢&#xff1f;店铺一直不出单怎么办…

Unity中URP下深度图的线性转化

文章目录 前言一、_ZBufferParams参数有两组值二、LinearEyeDepth1、使用2、Unity源码推导&#xff1a;3、使用矩阵推导&#xff1a; 三、Linear01Depth1、使用2、Unity源码推导3、数学推导&#xff1a; 前言 在之前的文章中&#xff0c;我们实现了对深度图的使用。因为&#…

阿里云弹性网络接口技术的容器网络基础教程

基于容器的虚拟化是一种虚拟化技术。与虚拟机 &#xff08;VM&#xff09; 相比&#xff0c;容器更轻量级&#xff0c;部署更方便。Docker是目前主流的容器引擎&#xff0c;支持Linux、Windows等平台&#xff0c;以及Kubernetes&#xff08;K8S&#xff09;、Swarm、Rocket&…

奇偶链表00

题目链接 奇偶链表 题目描述 注意点 在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题偶数组和奇数组内部的相对顺序应该与输入时保持一致 解答思路 奇数组的头节点是head&#xff0c;偶数组的头节点是head.next&#xff0c;关键是要改变每个节点的next指针及…

[ArkUI开发技巧] 应用的全屏式沉浸适配

引言 在开发应用的过程中&#xff0c;为了使用户聚焦在应用本身&#xff0c;最好对应用进行沉浸适配。先前有一种适配方法&#xff0c;将SystemBarProperties设置成应用页面顶部和底部的颜色&#xff0c;但是这种方法在切换页面的过程中过渡十分僵硬&#xff0c;且应用在小窗模…

数据结构实验3:顺序表的基本操作

目录 一、实验目的 二、实验原理 1. 连续存储空间 2. 元素访问 3. 固定大小 4. 容量管理 5. 动态顺序表 6. 顺序表的插入 7. 顺序表的删除 8. 顺序表的应用 三、实验内容 问题描述 代码 截图 分析 一、实验目的 1、 熟练掌握顺序表结构体的实现。 2、 熟练掌握…