.net core项目部署在docker容器,本文开发工具Visual Studio 2019,操作系统centos 7.6
如docker还未安装可参考文章:docker介绍安装
1.创建站点
创建项目程序,并勾选启用docker支持
image.png建成项目后,会生成dockerfile文件
image.png如果创建项目时没有勾选启用docker支持,也可以在项目中添加dockerfile文件,在项目中右键选择“添加”选项下的“docker支持”,也可以使用“txt”重命名dockerfile文件
image.png然后选择Linux系统:
image.png2.编写dockerfile文件
自动生成dockerfile内容
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["DockerDemo.csproj", ""]
RUN dotnet restore "./DockerDemo.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "DockerDemo.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerDemo.dll"]
如果不使用源码,使用部署包发布 build,publish命令可省略,本文采用部署包发布,
修改dockerfile文件如下:
# 环境运行时基础镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
#将当前目录内容 copy到镜像目录
COPY . /dockerDemo
#设置工作目录
WORKDIR /dockerDemo
#对外暴露端口
#(注:EXPOSE并不会让容器的端口访问到主机。
#要使其可访问,需要在docker run运行容器时通过-p来发布这些端口,
#或通过-P参数来发布EXPOSE导出的所有端口)
EXPOSE 80
EXPOSE 443
#运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "DockerDemo.dll"]
3.容器发布
1.构建镜像
项目发布后,将dockerfile文件拷贝到发布目录中,并将目录cd到部署目录,使用下面的命令构建镜像
#docker build -t <镜像名称> <目录> .为当前目录
docker build -t dockerdemo .
image.png
上诉步骤完成即创建成功,查看镜像是否成功创建
image.png2.运行镜像
镜像构建完成后,使用以下命令来运行镜像容器
#docker run --name=<容器名称> -d<后台运行> -p <外部暴露端口>:<容器端口> <关联镜像>
docker run --name=dockerdemo -d -p 8080:80 dockerdemo:latest
如下图成功执行,docker ps查看运行容器
image.png3.访问页面验证是否发布成功
image.png到此一个简单的容器发布就完成了
网友评论