系列目录:

【Docker】 CentOS7 安装 Docker 及其使用方法 ( 一 )

【Docker】 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二)

【Docker】 .Net Core 3.1 webapi 集成EF Code First (MySql) (三)

【Docker】使用Docker 发布 .Net Core 项目 (四)

.......持续不定期更新中

如果安装使用Docker 请看目录(一)、(二),此文章不再介绍。

首先要生成Dockerfile文件,然后根据这个文件build docker 的 image(镜像),然后根据image,创建container(容器)。

1.把要发布的项目添加 Docker 支持(或者在新建项目的时候就添加docker支持),然后在项目目录下找到 Dockerfile 配置文件。

右键dockerfile文件,复制到输出目录改为 始终复制 ,这样发布的项目才会包含这个文件。

2. 修改dockerfile文件

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#工作目录
WORKDIR /app
#将整个publish文件 放到该文件夹下 ..的意识是 ./app
COPY . .
EXPOSE 8001
#启动命令 如果项目内没有指定useUrl 可以使用 ENTRYPOINT ["dotnet", "Test.dll","urls=http://*:8001"] 指定
ENTRYPOINT ["dotnet", "Test.dll"]

发布项目,把Publish目录下的文件 拷贝到Linux 服务器中

3. 到目标目录下,使用构建docker image

docker build -t test .

test的意思是这个 image 的名字取名为test

使用 docker images查看镜像是否创建

docker images

4. 启动容器

生成容器,每运行一次,就会新建一个容器(这里的5000:5000 代表把容器内的5000端口映射到你主机的5000端口,容器端口在后)

--name 是指定容器的名字 不指定会默认

docker run --name test1 -it -p 5000:5000 test

执行完之后报错,提示如下

研究后得知,我在项目中配置了https的地址,然而https在docker中不启用。

解决办法:删除不使用https 或者修改 appsetting文件

"Kestrel": {
"Endpoints": {
"HttpsInlineCertFile": {
"Url": "https://*:8001",
"Certificate": {
"Path": "socialnetwork.pfx",
"Password": "xxx"
}
}
}
}

5.继续创建容器,先删除之前容器和镜像,再重新build镜像,run容器。

docker rmi test
docker rm test1
docker build -t test .
docker run --name test1 -it -p 5000:5000 test

运行成功

测试启动成功,现在把这个容器删除 继续创建容器,命令加上 -d,使容器后台运行

docker run --name test1 -it -d -p 5000:5000 test

网页正常访问,你看到端口是80,是因为使用了nginx转发

6.检查运行状态、日志

查看容器运行状态

docker ps -a

查看docker日志

docker logs --since 30m CONTAINER_ID

其他具体操作请看【Docker】 CentOS7 安装 Docker 及其使用方法 ( 一 )

【Docker】使用 Docker 部署 .Net Core 项目 (四)的更多相关文章

  1. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  2. Linux 部署.Net Core 项目

    前面也有说到,我学习Linux 主要因为要学习一下部署.NET CORE项目到Linux 系统,这里就记录一下部署的详细步骤吧. 主要需要安装以下几个工具 1..NET CORE SDK 2.Jexu ...

  3. linux部署.net Core项目

    首篇笔记,多多关照.方便回忆和给新手指导,大神绕道 首先在Linux系统部署.net Core项目首先准备一个Linux系统的服务器,百度云,阿里云都行. 1.net core 部署在Linux系统上 ...

  4. 在Centos7中创建.net core 项目,并用Apache做代理服务器部署.net core项目

    这一篇实例记录一次用Centos7创建并部署.net core项目的过程,希望能帮到用到的小伙伴. Kestrel 是 ASP.NET Core 项目模板中包括的默认 Web 服务器,Kestrel可 ...

  5. IIS部署.net core项目

    1.安装AspNetCoreModule模块 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,中间最 ...

  6. Linux服务器使用Docker部署.net Core项目

    发布ASP.NET Core项目 和普通的项目发布一样,将项目发布到目标文件夹中 构建Dockerfile文件 在目标文件根目录新建Dockerfile文件(没有后缀) FROM microsoft/ ...

  7. Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7)

    前一节演示在docker中安装mssql,地址:Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7) 本节演示 .Net Core项目容 ...

  8. dotnet-warp && NSSM 部署 .net core 项目到 windows 服务

    如果你想将 .net core 项目以服务的形式部署到 windows 系统,希望本篇文章能够让你少走弯路 dotnet-warp 安装使用 dotnet-warp 是一个全局的.NET Core 工 ...

  9. Linux上用Docker部署Net Core项目

    前提:本地配置好Docker环境1.构建Net Core镜像 docker pull microsoft/dotnet 2.新建一个DockerFile文件并填充内容 #基于 `microsoft/d ...

  10. Jexus部署.Net Core项目

    Jexus Jexus 即 Jexus Web Server,简称JWS,是Linux平台上 的一款ASP.NET WEB服务器.它是 Linux.Unix.FreeBSD 等非Windows系统架设 ...

随机推荐

  1. [转帖]网络传输性能netperf测试方法和下载

    简介 Netperf是一种网络性能的测试工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式 ...

  2. Git的使用(二):远程仓库

    在github上创建远程仓库 本地创建Git仓库适合自己一个人完成工程,但是实际情况中我们需要其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份.常用的远程仓库就是g ...

  3. 【Spring】Bean装配类注解

    默认注入类型 多个同类型Bean 注入失败 依赖 使用目标(@Target) @AutoWired 通过type 默认首先安装属性名称进行注入 结合@Qualifier注解(value属性)设置注入的 ...

  4. 6.2 Windows驱动开发:内核枚举SSSDT表基址

    在Windows内核中,SSSDT(System Service Shadow Descriptor Table)是SSDT(System Service Descriptor Table)的一种变种 ...

  5. C/C++ 实现通过FTP上传下载

    实现FTP文件下载: #include <stdio.h> #include <Windows.h> #include <WinInet.h> #pragma co ...

  6. 从嘉手札<2024-1-29>

    补一下以前的几篇日记 2018-4-6 当一个人不在纠结没有什么 而是开始珍视他所拥有的一切的时候 才算得上真正的成熟 个人的意志 不能因受到社会的压力而软弱 也不能受到自然的压力而萎缩 而应当如冬日 ...

  7. centos7.9重启网卡提示Failed to start LSB: Bring up/down networking.

    前几天给一台机器状态centos7.9系统,设备有2个网口,今天重启网卡一直失败, 查看network状态,怀疑是eth0网卡有问题 查看eth0的网卡配置,发现是eth0网卡的BOOTPROTO=d ...

  8. C++中,new与malloc的区别何在?(代码实验向)

    在C++中,new与malloc()都可用于在堆中分配一块内存.其中,new是C++的语法,而malloc则来自古老的C语言,二者在使用时有何区别? new会调用构造函数,而malloc()不会 假设 ...

  9. ListView改变行高的技巧

    改变 ListView 的行高 (Line Height) (cjc,2009.6.2) 改变 ListView 的行高 (Line Height) (cjc,2009.6.2) ListView在R ...

  10. Net5 WorkService 继承 Quarzt 以及 Net5处理文件上传

    Net5 版本以Core为底层非framework框架的windowservice 服务. 在VS里叫WorkService 可以以CMD方式运行也可以以Windowservice方式运行,部署简单. ...