centos 7 使用 docker 部署.net core 项目

项目框架为 .net5 webapi 项目

1 centos7 安装docker

参考链接

https://blog.csdn.net/cbh1987/article/details/120481157 

2 创建基于.net 5框架启动项为 MyAdmin 的项目

项目中添加 Dockerfie 文件(如果没有,使用visual studio右击项目选择“添加”-》“添加docker支持”,然后把生成 Dockerfie 文件属性 “复制到输出目录”设置为“如果较新则复制”

visual studio 右击项目添加的dockerfile 文件内容修改如下

#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/aspnet:5.0-buster-slim AS base

WORKDIR /app
COPY . .
EXPOSE 20010 
ENTRYPOINT ["dotnet", "MyAdmin.dll"]

Dockerfile EXPOSE设置的端口需要与 需要与程序内部配置的端口一致(如 hosting.json 配置的端口);参考链接 https://blog.csdn.net/zbq2017/article/details/113792577

hosting.json 配置如下:

在项目 Program.cs 读取 hosting.json 配置启动端口如下

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseConfiguration(
                        new ConfigurationBuilder()
                        .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                        .AddJsonFile(path: "hosting.json", optional: true, reloadOnChange: true)
                        .Build()
                     )
                    .UseStartup<Startup>()
                    ;
                })
                .UseSerilog()
            ;

 

3 使用visual studio的发布功能,发布项目,然后把发布生成的文件上传到linux的指定目录

linux 删除文件夹命令 rm -fr MyAdmin  删除 MyAdmin 文件夹

本项目把发布文件上传到 /publish/docker/MyAdmin 目录下

4 构建docker 镜像命令

# 进入到项目发布目录下

cd /publish/docker/MyAdmin

# 在项目发布目录下执行构建镜像命令 注意有个 命令里有个 . 不要忽略了

docker build -t myadmin20010 .

 其中 myadmin20010 为镜像名

// 在项目发布目录下执行使用 myadmin20010 镜像创建容器实例命令

docker run -itd -p 20011:20010 --name myadmin20011_server myadmin20010

其中 -p 20011:20010 表示 把对主机 20011端口的访问映射到容器的20010端口;

-i 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d: 后台运行容器,并返回容器ID
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
--name 容器实例名
myadmin20010 为上一步build的镜像标签名

备注:其他常用命令

// 查看镜像列表

docker images  

// 查看容器实例列表

docker ps -a 

// 删除 myadmin20011_server 容器
docker rm -f myadmin20011_server
// 删除 myadmin20011 镜像
docker image rm myadmin20011

5 测试访问
访问链接
http://175.178.218.96:20011

 

需要保证 linux主机上 20011 端口开放了防火墙访问

 

参考资源

https://www.bilibili.com/video/BV1b44y1H7yM?p=97&spm_id_from=pageDriver

posted @ 2022-05-04 10:42  温故纳新  阅读(318)  评论(0编辑  收藏  举报