【Docker】Asp.net core在docker容器中的端口问题
2021-02-09 14:21
标签:file libssl otn int lang 修改 figure inux 特定 还记得【One by one系列】一步步学习docker(三)——实战部署dotnetcore]中遇到的问题么?容器内部启动始终是80端口,并不由命令左右。 所谓知其然就要知其所以然,浅尝辄止并不是个好习惯,主要是以下几个因素共通导致了这种情况。 ASP.NET Core项目使用Kestrel作为默认的web服务器。 而集成Kestrel的ASP.NET Core有4中方式指定终结点URL: 首先我们按照 根据上面的 根据上面的 没错正是在基础镜像 所以你想修改默认端口,在你的Dockerfile添加如下,修改默认值即可: 【Docker】Asp.net core在docker容器中的端口问题 标签:file libssl otn int lang 修改 figure inux 特定 原文地址:https://www.cnblogs.com/RandyField/p/13059985.htmldocker run --name container-name -p 81:5000 mywebapi
1.Kestrel配置
ASPNETCORE_URLS
环境变量--urls
命令行参数urls
主机配置键UseUrls
扩展方法2.按图索骥-Dockerfile
2.1 Asp.Net Core Runtime
asp.net core
的其中一个版本构建镜像的Dockerfile
ARG REPO=mcr.microsoft.com/dotnet/core/runtime
FROM $REPO:3.1-buster-slim
# Install ASP.NET Core
RUN aspnetcore_version=3.1.4 && curl -SL --output aspnetcore.tar.gz https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-x64.tar.gz && aspnetcore_sha512=‘a761fd3652a0bc838c33b2846724d21e82410a5744bd37cbfab96c60327c89ee89c177e480a519b0e0d62ee58ace37e2c2a4b12b517e5eb0af601ad9804e028f‘ && echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - && tar -ozxf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App && rm aspnetcore.tar.gz
2.2 .Net Core Runtime
Dokcerfile
,可以看到asp.net core
的镜像是在.net core
的基础上构建的,所以继续找到.net core
的构建镜像的Dockerfile
ARG REPO=mcr.microsoft.com/dotnet/core/runtime-deps
FROM $REPO:3.1-buster-slim
RUN apt-get update && apt-get install -y --no-install-recommends curl && rm -rf /var/lib/apt/lists/*
# Install .NET Core
RUN dotnet_version=3.1.4 && curl -SL --output dotnet.tar.gz https://dotnetcli.azureedge.net/dotnet/Runtime/$dotnet_version/dotnet-runtime-$dotnet_version-linux-x64.tar.gz && dotnet_sha512=‘1869565558e5a85b6a898e792d7b5dece611b25f7f6fd8f015ffb16dccc7485f1412e04809da2e3f56744d24c75e1d3addbd2856c45ae7e66a2c7b71ea23e827‘ && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - && mkdir -p /usr/share/dotnet && tar -ozxf dotnet.tar.gz -C /usr/share/dotnet && rm dotnet.tar.gz && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
2.3 .NET Core Runtime Dependencies
Dokcerfile
,可以看到.net core
的镜像是在runtime-deps
的基础上构建的,所以继续找到runtime-deps
的构建镜像的Dockerfile
FROM amd64/debian:buster-slim
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates # .NET Core dependencies
libc6 libgcc1 libgssapi-krb5-2 libicu63 libssl1.1 libstdc++6 zlib1g && rm -rf /var/lib/apt/lists/*
# Configure web servers to bind to port 80 when present
# 这就是真相
ENV ASPNETCORE_URLS=http://+:80 # Enable detection of running in a container
DOTNET_RUNNING_IN_CONTAINER=true
3.真相浮出水面
ENV ASPNETCORE_URLS=http://+:80 \
.NET Core Runtime Dependencies
构建镜像的Dockerfile中指定了应用终结点URLENV ASPNETCORE_URLS=http://+:80
ENV ASPNETCORE_URLS=http://+:5000
4.写在末尾
文章标题:【Docker】Asp.net core在docker容器中的端口问题
文章链接:http://soscw.com/essay/53137.html