带有Dockerfile的Java Spring引导随机端口

带有Dockerfile的Java Spring引导随机端口,java,spring,spring-boot,docker,port,Java,Spring,Spring Boot,Docker,Port,如果使用Java Spring Boot,可以将应用程序运行的服务器端口设置为任意端口,也可以设置为随机端口: 服务器: 端口:0 但是,当我现在为我的应用程序使用Dockerfile时,我不知道要公开哪个端口。有没有办法找到这个端口?当你启动一个应用程序时,我想你可以在控制台上看到。据我所知,docker使用8080或8081 编辑1: 检查此-> 您可以通过Dockerfile公开端口,也可以使用--expose,然后使用-p标志发布端口。这会将公开的端口绑定到随机端口上的Docker主机

如果使用Java Spring Boot,可以将应用程序运行的服务器端口设置为任意端口,也可以设置为随机端口:

服务器:
端口:0

但是,当我现在为我的应用程序使用
Dockerfile
时,我不知道要公开哪个端口。有没有办法找到这个端口?

当你启动一个应用程序时,我想你可以在控制台上看到。据我所知,docker使用8080或8081

编辑1: 检查此->

您可以通过Dockerfile公开端口,也可以使用--expose,然后使用-p标志发布端口。这会将公开的端口绑定到随机端口上的Docker主机(通过运行Docker容器ls进行验证)

您可以通过Dockerfile公开端口,也可以使用--expose,然后使用-p80:80标志发布端口。这将把暴露的端口绑定到端口80上的Docker主机,并且它期望暴露的端口也是80(根据需要使用host:CONTAINER进行调整)

您可以忽略公开任何内容,只需使用-p80:80,在这种情况下,它同时公开和发布端口

  • 不要为Spring应用程序使用随机端口。使用默认端口,并让Docker将其公开为您喜欢的任何端口
  • 不要为Spring应用程序使用随机端口。通过环境变量指定,并让Docker提供

  • 谢谢你的建议。我不太确定在微服务体系结构中该如何工作。对于部署,我使用portainer.io和Docker Swarm,如何在不每次手动增加端口的情况下处理此类服务的多个实例。我相信您的想法是错误的。容器是隔离和独立的。您可以运行N个Spring Boot应用程序的容器实例,所有这些实例都在内部使用相同的端口。我没有使用过portainer.io或Swarm。我使用过Rancher,它有一个软件负载平衡器,可以将外部、公共、知名的IP:PORT映射到内部服务(即运行应用程序的N个容器)。