asp net core 3.1 发布到 docker
我的环境:win10 + visual studio 2019 + Docker for Windows1.安装Docker,参照https://www.runoob.com/docker/windows-docker-install.html。2.使用vs新建一个asp net core web api项目,起名demoapi,可以不勾选启用docker支持。3.项目点击右键,选...
我的环境:win10 + visual studio 2019 + Docker for Windows
1.安装Docker,参照https://www.runoob.com/docker/windows-docker-install.html。
2.使用vs新建一个asp net core web api项目,起名demoapi,可以不勾选启用docker支持。
3.项目点击右键,选择添加docker支持,系统会为我们自动生成dockerfile。
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["demoapi/demoapi.csproj", "demoapi/"]
RUN dotnet restore "demoapi/demoapi.csproj"
COPY . .
WORKDIR "/src/demoapi"
RUN dotnet build "demoapi.csproj" -c -o /app/build
FROM build AS publish
RUN dotnet publish "demoapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "demoapi.dll"]
这个文件使用了两个镜像,其中mcr.microsoft.com/dotnet/core/sdk:3.1-buster是用来还原程序,编译应用的。mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim则是真正的.net core 的运行时。如果是linux环境,可以直接将程序上传到linux,直接执行docker的build即可。因为本机已经安装了sdk,所以可以省去sdk镜像下载的时间,修改一下dockerfile,通过手动编译,然后用docker直接打包镜像。
#引入镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#设定工作目录
WORKDIR /app
#在容器中程序使用的端口,一定要和程序启动使用的端口对应上
EXPOSE 80
#复制文件到工作目录
COPY . .
#启动程序
ENTRYPOINT ["dotnet", "demoapi.dll"]
然后设置dockerfile复制到发布的目录。
4.设置发布
右键项目,选择发布
选择文件夹发布,然后点击创建配置文件。
点击发布按钮
发布成功
5.docker打包镜像
打开命令提示符,转到发布目录下。
执行以下命令
docker build -t demoapi:v1 .
期间会从dockerhub上拉取基础镜像,等待一下即可。
使用images命令查看生成的镜像,第一个就是刚才生成的
创建容器,设定端口映射,指定镜像。
docker run -p 9000:80 demoapi:v1
然后使用浏览器访问9000端口
成功访问
用docker ps查看一下容器
更多推荐
所有评论(0)