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

基于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
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
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行是指把容器中/etc/ssl/openssl.cnf文件中的TLSv1.2替换为TLSv1.0,目的是解决在docker容器中net6程序访问MS SQL Server报ssl/tls错误,由于sql server数据库默认采用的tls1.0,而/etc/ssl/openssl.cnf中指定tls最小版本为1.2。
第4行指定开放的端口
第5行指定asp.net core站点端口,要与第3行开放的端口一致
第7行指定镜像别名
第8行指定工作目录
第9行说明把本机bin/Release/net6.0/publish/目录下的所有内容复制到镜像系统的工作目录/app下
第10行说明执行命令dotnet Wongoing.Main.API.dll

从第9行可以看出我们需要向生成并发布一下这个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镜像是正常的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

游戏测试大揭秘,帮你轻松过关

游戏测试可以看作是软件测试的一个分支,黑盒测试最基本的要求是会玩游戏。小公司会要求测试能力更加全面的员工,其中除了功能测试还要会性能测试,兼容测试,弱网测试,自动化测试等。 游戏测试是游戏开发过程中必不可少…

vue2-手写轮播图

轮播图5长展示&#xff0c;点击指示器向右移动一个图片&#xff0c;每隔2秒移动一张照片&#xff01; <template><div class"top-app"><div class"carousel-container"><div class"carousel" ref"carousel">&…

Tensorflow2.0笔记 - 修改形状和维度

本次笔记主要使用reshape&#xff0c;transpose&#xff0c;expand_dim&#xff0c;和squeeze对tensor的形状和维度进行操作。 import tensorflow as tf import numpy as nptf.__version__#tensor的shape和维数获取 #假设下面这个tensor表示4张28*28*3的图片 tensor tf.rando…

RAG 详解

原文&#xff1a;GitHub - Tongji-KGLLM/RAG-Survey 目录 RAG调查 什么是RAG&#xff1f;RAG的范式 幼稚的 RAG高级 RAG模块化 RAG如何进行增强&#xff1f;RAG 还是微调&#xff1f;如何评估 RAG&#xff1f;前景 严峻的挑战多式联运扩展RAG的生态系统RAG论文清单 增强阶段 …

C++多线程学习[二]:线程的传参以及传参的一些坑

一、线程的传参 #include<iostream> #include<thread> #include<string> using namespace std; void threadtest(int a,double b,string str) {this_thread::sleep_for(100ms);cout << a << " " << b << " " &…

【Linux】编写第一个小程序:进度条

文章目录 1. 预备知识1.1 简单认识几个函数1.1.1 sleep()1.1.2 fflush()1.1.3 usleep()1.1.4 memset() 1.2 缓冲区1.3 回车与换行 2. 编写入门版的进度条2.1 基本逻辑2.2 美化效果2.3 代码实现2.4 执行效果 3. 编写升级版的进度条3.1 代码实现3.2 执行效果 1. 预备知识 1.1 简…

C++每日一练(15):简单幂计算

题目描述 输入两个数a和b&#xff0c;求a的b次方。 输入 输入两个整数a&#xff0c;b&#xff08;1<a<10&#xff0c;1<b<15&#xff09;。 输出 输出一个正整数&#xff0c;该值<1000000000000。 输入样例 3 3 输出样例 27 参考答案 #include<bits/stdc.h&…

企业级iptalbes防火墙

一、IPtables介绍 Iptables是unix/linux自带的一款开源的基于包过滤(对OSI模型的四层或者是四层以下进行过滤)的防火墙工具&#xff0c;它的功能十分强大&#xff0c;可以对流入和流出服务器的数据包进行很精细的控制。 iptables其实并不是真正的防火墙&#xff0c;我们可以把…

【AI绘画】全网最强midjourney使用方法!新手必收藏!!

手把手教你入门绘图超强的AI绘画程序Midjourney&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。下面是Midjourney注册和使用的方法。给大家带来了全新保姆级教程资料包**&#xff08;文末可获取&#xff09;** 第一步&#xff1a; 先注册一个D…

10 sping核心技术验证(Validation) 数据绑定(Data Binding)

Validation Spring提供了一个Validator接口&#xff0c;您可以使用它来验证对象。Validator接口通过使用Errors对象来工作&#xff0c;以便在进行验证时&#xff0c;验证器可以向Errors对象报告验证失败public class Person {private String name;private int age;// the usua…

代码随想录算法训练营第三天| LeetCode203.移除链表元素、707.设计链表、206.反转链表

文章目录 一、203. 移除链表元素感受代码二、707.设计链表感受代码206.反转链表感受总结一、203. 移除链表元素 感受 我对这道题。从理论上来说太熟悉了。咸鱼讲数据结构常用的方法他都会讲。但是我没上机没写过。到后面上机还是写不出来。giao。 代码 第一次写,想说一下,…

Blazor中使用impress.js

impress.js是什么&#xff1f; 你想在浏览器中做PPT吗&#xff1f;比如在做某些类似于PPT自动翻页&#xff0c;局部放大之类&#xff0c;炫酷无比。 官方示例直接放到Blazor中是不可用的。几经尝试&#xff0c;用以下方法可以实现。 &#xff08;写文不易&#xff0c;请点赞、…

Java常用类---日期时间类

日期时间类 Date类 简介 在Java中&#xff0c;Date类用来封装当前的日期和时间。Date类提供两个构造函数来初始化对象&#xff0c;如下所示。 通过Date() 使用当前日期和时间来初始化对象。 通过Date(long millisec) 来初始化对象&#xff0c;其中的参数是从1970年1月1日起…

RS触发器

转自&#xff1a;【基础】RS触发器_两个或非门构成rs触发器-CSDN博客 RS触发器为什么能 “保持上一状态” 触发器就是在常规的门电路的基础上加入了反馈&#xff0c;这样触发器就实现了存储数据的功能。这也是上面章节 “RS触发器实验” 的 RS触发器特征表 中第3条 “保持上一…

Redis的优化

1 Redis的高可用 1.1 高可用的定义 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&…

mat数据格式转png

目的 将多个.mat数据格式转化成多个文件夹下的png图片格式 即 一个PAT.mat文件&#xff0c;生成一个PAT文件夹下的图片 方法 1 单文件处理 import scipy.io as scio from PIL import Image import numpy as npdef MatrixToImage(data):data data*255new_im Image.fromarray…

windos exe 以服务的形式运行(开机运行)

windos 品台编写的 小工具 exe 或者 批处理 .bat 经常需要开机自启动&#xff0c;可以直接把它 加在开启启动项&#xff0c;或者做成 windos服务&#xff0c;这样既可以开机自动启动而且还可以 防止误触关闭掉&#xff1b; windos 以服务启动 exe/bat 的通用方式&#xff1…

Word不同部分(分节)设置页眉和页码的使用指南——附案例操作

Word页眉和页码分节设置的使用指南 目录 Word页眉和页码分节设置的使用指南摘要1. 插入分节符2. 设置不同的页眉3. 设置不同的页码4. 调整页码的起始值5. 删除或更改分节6. 预览和调整 摘要 在撰写word文档时&#xff0c;我们经常需要在不同的部分应用不同的页眉和页码格式。在…

androj studio安装及运行源码

抖音教学视频 目录 1、 jdk安装 2、下载安装androj studio 3 、打开源码安装运行相关组件 4、 安装模拟器 1、 jdk安装 安卓项目也是java开发的&#xff0c;运行在虚拟机上&#xff0c;安装jdk及运行的时候&#xff0c;就会自动生成虚拟机&#xff0c; jdk前面已经讲过&…

宏景eHR 多处 SQL注入漏洞复现

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR view、trainplan_tree.jsp等接口处存在SQL注入漏洞,未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令,从而窃…