阅读 153

dotnet5+docker 发布运行(入门)

1、环境

虚拟机:VMware 版本 :16.0.0 build-16894299

系统:Centos7 版本 :3.10.0-1127.el7.x86_64

ssh、ftp 工具 :MobaXterm

2、安装Docker

官方安装文档:

2.1卸载旧版本

 sudo yum remove docker                   docker-client                   docker-client-latest                   docker-common                   docker-latest                   docker-latest-logrotate                   docker-logrotate                   docker-engine

如果yum报告没有安装这些软件包,那也没关系

2.2 安装

官网提供了三种安装方式:仓储安装、手动安装RPM包、脚本安装

我们采用推荐的 仓储方式


安装 yum-utils 工具包 (用来设置仓储地址)

sudo yum install -y yum-utils

更新 所有包和内核 (线上环境请慎重操作!),该命令一般用于新装的系统

yum -y update

设置 仓储地址 (国内推荐阿里云)

官网:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

阿里云:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看可安装的Docker版本

yum list docker-ce --showduplicates | sort -r

展示部分列表:


如果你需要安装特定的版本,请执行命令:

sudo yum install docker-ce- docker-ce-cli- containerd.io

这里我们 直接安装最新版本:

sudo yum install docker-ce docker-ce-cli containerd.io

注意!!!:如果你之前已经安装了dotnet core 相关环境,这里可能会提示 某些包的冲突,你可以卸载掉有冲突的包,或者跳过错误

2.3 启动docker 并设置开机自启动

验证安装情况,查看当前docker 版本信息:

docker version

启动docker

sudo systemctl start docker

加入开机启动项:

sudo systemctl enable docker

3、安装 DotNet5

官网安装文档:

3.1 卸载预览版

使用包管理器管理 .NET 安装时,如果之前安装了预览版本,则可能会遇到冲突。 包管理器可能会将非预览版本解释为 .NET 的较早版本。 若要安装非预览版本,需要首先卸载预览版本。 有关如何卸载 .NET 的详细信息,请参阅。

查看已经安装的SDK和运行时

dotnet --list-sdks
dotnet --list-runtimes

3.2 安装

微软官方同样也提供了三种安装方式 包管理器(dnf、yum)、脚本、手动安装

这里我们仍然采用推荐的包管理器安装

官网使用了新一代的包管理器 dnf (DNF(Dandified Yum)是新一代的RPM软件包管理器。)

但是Centos7并不自带 dnf,我们仍然使用 yum 进行安装

安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安装

sudo yum install dotnet-sdk-5.0

检查安装情况

dotnet --version

4、创建示例项目

这里我们通过 dotnet 命令方式创建mvc项目,当然,你也可以通过VS进行创建,然后呢使用FTP工具上传。

创建示例MVC项目:

#这里我在 home目录下创建
cd /home
#创建一个名为 helloworld 的 mvc 项目
dotnet new mvc -n helloworld
#进入项目内 
cd helloworld
#生成项目
#这里为了便于区分项目源码和生成文件,我将生成文件放到项目外(/home/publish)
dotnet build -o /home/publish

生成后的文件列表

5、创建Dockerfile文件

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

我们需要在发布文件同目录下(publish)创建 一个 无后缀 的 名为 Dockerfile 的文件

Dockerfile文件内容:

# 设置基础镜像,这里将5.0运行时作为基础镜像
# as base 并没有特殊含义,相当于一个标记
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base

# 配置工作目录
# WORKDIR指令为Dockerfile中的任何 RUN、CMD、ENTRYPOINT、COPY 和 ADD指令设置工作目录。
# 如果WORKDIR不存在,即使在后续的Dockerfile指令中不使用它,也会创建它。
WORKDIR /app

# 复制文件到工作目录
# 这里啰嗦几句,下面一句的意思是将 上下文 中的文件 拷贝到 Docker内部
# 在不指定上下文目录的情况下,可以认为 Dockerfile 所在的目录就是 上下文
COPY . .

# 配置系统环境变量
# 利用环境变量 设置 ASP.net core 应用的监听地址
ENV ASPNETCORE_URLS http://0.0.0.0:5000

# 执行 dotnet 命令 启动 应用
ENTRYPOINT ["dotnet","helloworld.dll"]

6、创建Docker镜像

我们在 dockerfile 文件所在目录(puclish) 执行创建 docker 镜像的操作

# 创建一个名为mymvc 标签 v1 的镜像,最后的 . 表示在当前上下文中构建
# 这里的镜像名称必须是小写
docker build -t mymvc:v1 .

执行结果:

经过事先在Dockerfile文件中定义的五个步骤,我们成功创建了自己的镜像。

查看我们构建的镜像:

docker images

7、创建Docker容器

 # -d 以后台运行的方式
 # -p 将centos 中的 8080 端口 映射到 容器中的 5000 端口
 # --name 将容器命名为 myapp
 docker run -d -p 8080:5000 --name myapp mymvc:v1

查看我们新建的容器:

# docker ps 查看正在运行的容器   
# docker ps -a 查看正在运行的容器和历史记录
docker ps

如果你需要 镜像自动启动,那么加入 --restart=always

例:

docker run -d -p 8080:5000  --restart=always --name myapp mymvc:v1

8、验证和访问

至此,我们已经成功创建了 Docker容器,并运行了我们的MVC 程序

下面我们来验证

如果你使用的是命令窗口,那么执行:

curl http://localhost:8080

将成功输出一个 Html 页面源码:

如果你需要在虚拟机外的浏览器进行访问(假设你的虚拟机网络已经配置好),那么不要忘记将 8080 端口放行

 # 开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent  
 # 配置立即生效
firewall-cmd --reload  

在主机进行访问的结果:

注:这里没有样式,是因为 我没有 把 wwwroot 目录复制到编译文件中 ,如果你是从Vs 中发布的 文件,将不会出现这个问题

原文:https://www.cnblogs.com/527fanqie/p/14884032.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐