如何在Dockerfile中配置暴露多个支持HTTPS的服务端口
关于Dockerfile新增暴露HTTPS端口的问题解答
可行性说明
完全可以在同一个Dockerfile中新增更多HTTPS端口的暴露配置。EXPOSE是Dockerfile中的声明性指令,作用是告知镜像使用者该容器运行时计划使用的端口列表,本身没有数量限制,也不会主动放行端口,仅作为文档说明以及docker run -P(大写P)自动映射端口时的参考依据。
具体操作步骤
- 找到自动生成的Dockerfile中的现有
EXPOSE配置,默认的dotnet core项目生成的配置通常为以下两种形式之一:
或者# 分两行写法 EXPOSE 80 EXPOSE 443# 合并写法 EXPOSE 80 443 - 在现有
EXPOSE配置后追加你需要暴露的HTTPS端口即可,比如需要新增5001、6001两个HTTPS端口,修改后示例如下:
也可以直接合并为一行,效果完全一致:# 原有默认端口声明 EXPOSE 80 EXPOSE 443 # 新增自定义HTTPS端口声明,可按需修改端口号 EXPOSE 5001 6001EXPOSE 80 443 5001 6001 - 如需让dotnet core服务实际监听新增的HTTPS端口,还需要修改项目的启动配置,比如在启动时传入
--urls参数:dotnet 你的项目.dll --urls "https://0.0.0.0:443;https://0.0.0.0:5001;https://0.0.0.0:6001;http://0.0.0.0:80" - 容器运行时映射端口的示例,将宿主机对应端口映射到容器内的自定义HTTPS端口:
docker run -p 80:80 -p 443:443 -p 5443:5001 -p 6443:6001 你的镜像名
注意事项
EXPOSE仅做声明用途,即使你不在Dockerfile中声明对应端口,只要容器内的服务监听了该端口,运行时通过-p参数指定映射后也可以正常访问。
内容的提问来源于stack exchange,提问作者Nikola Nikolic
相关产品推荐
相关产品推荐

