Docker部署.net core项目
2020-08-17 本文已影响0人
异步木依
- 发布项目,运行命令:
dotnet publish -c Release -o published//在发布模式(默认为调试模式)下生成应用程序
- 在published 文件夹添加 Dockerfile文件
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "WebApp.dll"]
刚开始用的以上配置,结果mcr.microsoft.com的镜像拉取特别慢,卡死了几次,然后改为docker-mcr的 DockerHub 加速器,感兴趣的看这篇https://www.cnblogs.com/newbe36524/p/13148707.html
配置如下:
FROM newbe36524/sdk:3.1 AS build-env
WORKDIR /app
# Build runtime image
FROM newbe36524/aspnet:3.1
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "WebApp.dll"]
dockerfile文件指令说明:
- FROM -指定所创建镜像的基础镜像
- WORKDIR-配置工作目录
- EXPOSE-声明镜像内服务监听的端口 (可以不写,因为我们具体映射的端口可以在运行的时候指定)
- COPY-复制内容到镜像 (. .代表当前目录)
- ENTRYPOINT-启动镜像的默认人口命令
- 将published文件传到Linux上
构建docker镜像,这里要注意后面有个点并且只能镜像名称只能小写
sudo docker build -t webapi .
查看镜像:docker images
image.png- 创建并启动容器
-p是5001是容器对外端口,80是容器内机器端口。意思是映射外网8041端口到本地容器80端口。
docker run --name myfirstWeb -d -p 5001:80 webapi
查看容器:docker ps -a
image.png