对于刚刚完成的Alipay支的Demo, 我想要把它部署到Docker中去, 下面我来演示相关步骤.
配置文件的重中之重是Dockerfile, 他的内容如下:
# 第一部分是编译并发布项目
# 以微软.Net Core SDK作为基础镜像, 并且以build作为别名
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
# 切换build镜像工作目录到/app
WORKDIR /app
# 拷贝sln和csproj项目文件
COPY *.sln .
COPY AliPay/*.csproj ./AliPay/
# Restore项目用到的包
RUN dotnet restore
# 拷贝项目文件到镜像里面相应到目录
COPY AliPay/. ./AliPay/
# 切换build镜像工作目录到/app/AliPay
WORKDIR /app/AliPay
# 以Release模式发布应用到out文件夹
RUN dotnet publish -c Release -o out
# 第二部分是启动项目
# 以微软.Net Core运行环境作为基础镜像, 并且以runtime作为别名
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
# 切换runtime镜像工作目录到/app
WORKDIR /app
# 把build镜像里面编译出来的文件拷贝到runtime镜像
COPY --from=build /app/AliPay/out ./
# 暴漏端口
EXPOSE 8000
# 启动应用
# ENTRYPOINT ["dotnet", "AliPay.dll", "--server.urls", "http://*:8000"]
ENTRYPOINT ["dotnet", "AliPay.dll"]
还可以再多一个.dockerignore, 如下:
binobj\
在创建了Dockerfile之后, 创建镜像将会很容易:
docker build -t alipayimg .
里面的两个参数:
最后是启动镜像:
docker run -d -p 8666:8000 --name alipay alipayimg
参数说明:
一开始, 我按照网上的介绍, 一直使用如下命令指定端口:
dotnet AliPay.dll --server.urls http://*:8000
而它一直不起作用.
Github上说需要添加Microsoft.Extensions.Configuration.CommandLine, 可是添加完了依然不起作用, 没办法, 最后只能在代码里把端口写死:
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureAppConfiguration(config =>
{
config.AddJsonFile("alipay.json");
// config.AddCommandLine(args);
});
webBuilder.UseUrls("http://*:8000");
webBuilder.UseStartup<Startup>();
});
打开主机浏览器, 访问http://localhost:8666, 大功告成.
原文:https://www.cnblogs.com/jerryqi/p/11778645.html