部署.Net6项目到docker

作者:民工黑猫 时间:2024-06-05 15:43:46 

部署.net6项目到docker

【1】新建.net6 mvc或webapi项目;
【2】在mvc或webapi项目的根目录下创建Dockerfile文件,并设置为始终复制;

Dockerfile文件内容为:


#添加.net6基础镜像
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
#容器工作目录
WORKDIR /app

#指定项webapi或mvc站点的内部启动端口,默认是80
#ENV ASPNETCORE_URLS http://+:5001

#暴露docker容器端口
#EXPOSE 8001
#EXPOSE 443

#拷贝发布目录下的所有文件到容器的工作根目录
#COPY . . (这样写也可以)
COPY ./ ./

# 如果用System.SqlClient.dll访问数据库,需要加这一句
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf

#容器入口点
ENTRYPOINT ["dotnet", "dotnet6Demo.web.dll"]
【3】发布mvc或webapi项目;
【4】将发布后的mvc或webapi项目拷贝到centos服务器的某个文件夹,例如拷贝到【/wwwroot/myproject】文件夹;
【5】安装docker

安装方法参考:https://www.aspxhome.com/article/232534.htm

【6】安装.net6镜像

docker pull mcr.microsoft.com/dotnet/aspnet:6.0
【7】进入到centos服务器的 /wwwroot/myproject 目录,构建一个镜像,镜像名格式为【镜像名:版本号】,比如:dotnet6-demo:0.0.1

构建镜像命令:


cd /wwwroot/myproject
docker build -t dotnet6-demo:0.0.1 .

dotnet6-demo 表示构建的镜像名称,:0.0.1表示镜像版本号,注意镜像名后面有个空格 + 英文点号,表示构建当前路径下的文件

上面这条命令是用默认配置文件名 Dockerfile 构建的镜像,如果用自定义配置文件名构建镜像,需要加 -f 参数。


docker build -f Dockerfile02 -t dotnet6-demo:0.0.1 .
【8】创建自定义网络

默认网络docker0,它不能用域名访问,所以要创建自定义网络。


docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

参数说明:

  • --driver bridge #表示桥接模式

  • --subnet 192.168.0.0/16  #16表示最多支持65535个ip,可以分配192.168.0.2到192.168.255.255,如果没有指定--subnet参数默认网段为172.17.0.0/16,默认网关为172.17.0.1;

  • --subnet 192.168.0.0/24  #24表示最多支持254个ip,可以分配192.168..0.2到192.168.0.255

  • --gateway  #表示docker容器的网关

mynet表示网络名

部署.Net6项目到docker

在docker 中直接 run 创建容器时不加自定义的网络,默认使用网络名为bridge的网络,这是docker0网络,容器之间无法使用容器名相互ping通,只能通过ip相互ping通。

我们自己定义的网络,容器之间是可以直接通过容器名相互ping通的。

查看mynet网络的详细信息:


docker network inspect mynet
【9】创建并运行容器

创建容器格式:

docker run -d --name 容器名 -p 外部端口号:docker容器端口号 --restart=always -v /宿主机目录 : /容器目录 镜像名

使用默认网络 docker0 创建容器(生产环境不推荐):


docker run -d --name my-dotnet6-demo01 -p 8001:80 --restart=always -v /www-appdata/dotnet6-demo/logs:/logs -v /www-appdata/dotnet6-demo/upload:/upload dotnet6-demo:0.0.1

使用自定义网络创建容器(多了个 --net 参数):


docker run -d --name my-dotnet6-demo01 -p 8001:80 --restart=always -v /www-appdata/dotnet6-demo/logs:/logs -v /www-appdata/dotnet6-demo/upload:/upload --net mynet dotnet6-demo:0.0.1

参数说明:

  • -d #后台运行

  • -p 8001:80 #缩主机端口号:docker端口号

  • -v #数据卷路径,格式:(-v /宿主机目录:容器目录)或者(-v /容器目录),可以带多个 -v 参数。

  • --restart=always  #dokcer重新启动时也将容器自动启动

  • --net mynet      #指定网络名

查看正在运行的容器:


docker ps

查看所有容器:


docker ps -a
【10】访问容器

访问方式:http://宿主机ip:端口号

http://192.168.1.200:8002

进入到容器

【11】进入到容器

docker exec -it my-dotnet6-demo01 /bin/bash

容器设置

给已有容器设置开机自动启动


docker update --restart=always 容器名字

取消容器开机自动启动


docker update --restart=no 容器名字

来源:https://www.cnblogs.com/yyee/p/15676770.html

标签:部署,.Net6,项目,docker
0
投稿

猜你喜欢

  • jupyter notebook 增加kernel教程

    2023-04-27 20:28:43
  • Python+OpenCV图像处理之直方图统计

    2023-11-19 19:17:31
  • 资料:MsSQL常用SQL语句

    2009-02-23 12:54:00
  • Python人工智能构建简单聊天机器人示例详解

    2022-03-10 04:42:29
  • vue项目动态设置页面title及是否缓存页面的问题

    2024-04-10 10:23:52
  • Python实现8种常用抽样方法

    2023-02-01 18:03:19
  • Oracle外键不加索引引起死锁示例

    2024-01-20 20:10:08
  • docker下mysql 8.0.20 安装配置方法图文教程

    2024-01-19 05:02:39
  • python实现简单flappy bird

    2022-08-03 12:06:33
  • mysql 重要日志文件汇总

    2024-01-28 20:34:55
  • 几个优化WordPress中JavaScript加载体验的插件介绍

    2023-11-03 12:03:08
  • PyQt5 关于Qt Designer的初步应用和打包过程详解

    2023-07-31 20:26:32
  • Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 <font color=red>原创</font>

    2021-08-21 17:17:21
  • layui 富文本图片上传接口与普通按钮 文件上传接口的例子

    2024-05-22 10:36:28
  • autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法

    2024-04-30 10:10:44
  • win10下python3.5.2和tensorflow安装环境搭建教程

    2022-11-05 15:56:21
  • 5款最强且免费的Python IDE小结

    2022-12-07 05:25:19
  • Python学习笔记(一)(基础入门之环境搭建)

    2021-12-26 12:51:40
  • 用Python爬取某乎手机APP数据

    2021-02-03 17:04:59
  • sql基本查询语句介绍

    2008-05-21 13:58:00
  • asp之家 网络编程 m.aspxhome.com