如何固定Docker部署的Spring Boot服务的暴露端口?
问题解决方法
核心原因
你启动Spring Boot容器时,--publish参数仅指定了容器内部端口7070,Docker会默认将其映射到主机的随机端口。要实现固定端口访问,必须明确指定主机端口:容器端口的映射关系。
修正启动命令
将Spring Boot容器的启动命令修改为:
docker run -it --network image --publish 7070:7070 <image_name>
或使用简写参数-p:
docker run -it --network image -p 7070:7070 <image_name>
修改后主机的7070端口会直接映射到容器内部的7070端口,之后你就可以通过http://localhost:7070/jpatest直接访问服务。
额外检查项
端口占用排查:如果启动时报端口被占用错误,执行对应命令查看主机7070端口的占用情况:
# Linux/macOS lsof -i :7070 # Windows netstat -ano | findstr :7070杀掉占用端口的进程后再重新启动容器。
数据库连接优化:你的
application.properties中数据库URL使用了jdbc:mysql://0.0.0.0:3306/test,在Docker内部网络中,应该使用MySQL容器的名称mysql作为主机名,即启用注释掉的配置:spring.datasource.url=jdbc:mysql://mysql:3306/test这样Spring Boot容器才能在Docker网络中更稳定地访问MySQL服务。
内容的提问来源于stack exchange,提问作者user25426008
相关产品推荐
相关产品推荐

