Loading

ASP.NET Core Docker容器部署


最简单的部署操作方式


1. 安装辅助工具

1.1 安装Git

sudo yum -y install git

安装完成后输入 git 命令查看

1.2 安装Nginx (这种部署方式暂时没用到)

参考文档:https://zhuanlan.zhihu.com/p/529008192

//预计1-5分钟

sudo yum install nginx 

yum安装nginx失败显示没有可用安装包 需要先执行以下命令:

sudo yum install epel-release

自启并启动服务

sudo systemctl enable nginx
sudo systemctl start nginx

输入以下命令查看是否成功

nginx -t

在这里插入图片描述

1.3 安装Dotnet SDK

  • 安装Dotnet SDK核心
//每台计算机只需要执行以此此操作

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
  • 安装Dotnet SDK 3.1
sudo yum install dotnet-sdk-3.1
  • 安装成功后查看一下版本号:
dotnet --list-sdks

1.4 安装Docker

  • 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新并安装 Docker-CE
sudo yum makecache fast 

//不执行 添加软件源信息 下面命令会出错
sudo yum -y install docker-ce
  • 查看docker版本,看下是否安装成功
docker --version
  • 开启Docker服务
sudo service docker start
  • 设置Docker开机启动
systemctl enable docker
  • 启动Docker
systemctl start docker

1.4.1 检查Docker是否可以正常运行

  • 运行hello-world镜像

检查docker是否可以正常运行(运行hello-world镜像,如果本机没有hello-world镜像,系统会自动拉取hello-world镜像)

docker run hello-world

在这里插入图片描述

  • 查看镜像
docker images

在这里插入图片描述

  • 查看容器
docker ps -a

在这里插入图片描述

  • 删除容器 (必须先删除容器,再删除镜像,顺序不能乱)
docker rm + 容器名/容器ID
  • 删除镜像
docker rmi + 镜像名字

2. 将后端项目部署到Docker中

2.1 传到GitHub,并git clone 到home文件夹下`

务必要将前端项目build生成后,放入后端项目的 wwwroot文件夹中,再上传到git服务器(我这里用的是github)
cd 到 home 路径下

cd /home
git clone https://github.com/填你账号名/填你自己仓库名.git

2.2 拷贝Dockerfile

如果根目录有了此文件,确认下是否正确
cd 到 项目路径下(DockerPublishOee),将Dockerfile文件拷贝

cd DockerPublishOee

以OeeIot项目为例,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:3.1 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["OEE_IoT/OEE_IoT.csproj", "OEE_IoT/"]
COPY ["ZeroSoft.BLL/ZeroSoft.BLL.csproj", "ZeroSoft.BLL/"]
COPY ["ZeroSoft.DAL/ZeroSoft.DAL.csproj", "ZeroSoft.DAL/"]
COPY ["ZeroSoft.DBUtility/ZeroSoft.DBUtility.csproj", "ZeroSoft.DBUtility/"]
COPY ["ZeroSoft.Model/ZeroSoft.Model.csproj", "ZeroSoft.Model/"]
RUN dotnet restore "OEE_IoT/OEE_IoT.csproj"
COPY . .
WORKDIR "/src/OEE_IoT"
RUN dotnet build "OEE_IoT.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "OEE_IoT.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "OEE_IoT.dll"]

执行下面 build 操作的时候会出现错误(如下):

COPY failed: forbidden path outside the build context

这是因为 Dockerfile文件 中的路径不对导致的。如果实在不知道什么问题,修改一次,build一次,慢慢尝试

2.3 执行构建镜像

cd DockerPublishOee

docker build -t laohu/apkimg .

完成后再执行 docker images 查看下

docker images

在这里插入图片描述

2.4 执行构建容器

docker run --name=apkcontainer -v /etc/localtime:/etc/localtime -it -p 8081:80 laohu/apkimg

:80 对应的是 Dockerfile 中的 EXPOSE 80

执行完之后,什么也没有,是因为我自己的项目将所有输出都删除了,你们自己项目应该是会输出一堆东西,我反正是等一段时间再去操作

我一开始用SqlServier2008R2,会报一些错误,是因为数据库版本太低

2.5 Docker启动

docker start apkcontainer
  • 输入 docker ps -a 查看是否已经启动成功
docker ps -a

在这里插入图片描述

2.6 启动程序

  • 后端服务地址:
http://192.168.0.14:8081/
  • 前端登录页面:
http://192.168.0.14:8081/index.html

📄参考视频

📄参考文档

posted @ 2022-08-24 14:45  DotNeter-Hpf  阅读(180)  评论(0编辑  收藏  举报