我用Java创建了一个示例Web应用程序(使用Gradle和SpringBoot),然后使用Jib对其进行了docker化。在我的build.gradle文件中,有一行:“ ports = ['9090']”,因为我想在此端口上看到web-app。在我的application.properties文件中,有一行:“ server.port = 9090”。
成功创建Docker映像。但是,当我运行此图像时,我看不到其工作的结果。 如果我运行jar文件,一切正常。 Web应用程序可在9090端口上运行。
当我执行命令 docker run 时,我希望看到我的Web应用程序正常工作。 如何更改映像或任何其他端口(NettyWebServer属性)的端口,以查看所需的该端口上正在运行的映像? 您能帮我解决这个问题吗? 谢谢。
答案 0 :(得分:1)
如果您要在docker映像中使用与本地环境不同的端口,则可以使用application.properties
server.port=XXXX
复制不同的Dockerfile
文件
COPY ./src/main/resources/docker-application.properties /opt/my-app/docker-application.properties
然后在您的entrypoint.sh
java -jar /opt/my-app/my-app-0.0.1-SNAPSHOT.jar --spring.config.location=/opt/my-app/docker-application.properties
使用工具(Maven或Gradle)构建应用之后,您需要运行以下命令(假设您使用Dockerfile
等位于应用目录中)
docker build -t my-app .
docker run -d -p [desired_port]:[docker_application_properties_port] --name my-app my-app
desired_port
是您将在URL中放入的端口。 docker_application_properties_port
是您在docker-application.properties
文件中指定的文件。
如果您正在运行Windows OS
,那么很多用户在尝试使用127.0.0.1:9090
时都会出错。您应该尝试使用192.168.99.100:9090
,如果它不起作用,则需要先运行CMD
,然后运行ipconfig /all
,然后寻找类似Ethernet Adapter (DockerNAT)
的内容,然后查看{{1} }。