1

我在 Java 中创建了一个示例 Web 应用程序(使用 Gradle 和 SpringBoot),然后使用 Jib 将其 dockerized。在我的 build.gradle 文件中有一行:“ports = ['9090']”,因为我想在这个端口上看到 web-app。在我的 application.properties 文件中有一行:“server.port=9090”。

Docker Image 成功创建。但是当我运行这个图像时,我看不到它的工作结果。如果我运行 jar 文件一切正常。Web 应用程序适用于 9090 端口。

当我执行命令docker run时,我想看到我的网络应用程序正常工作。如何更改图像或其他任何东西(NettyWebServer 属性)的端口以查看我想要的该端口上正在运行的图像?你能帮我解决这个问题吗?谢谢你。

4

1 回答 1

1

如果您希望 docker 映像中的端口与本地环境中的端口不同,您可以application.propertiesserver.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)构建应用程序后,您需要运行以下命令(假设您与您的Dockerfileetc 在应用程序目录中)

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)并在IP那里查看。

于 2019-01-22T07:06:31.833 回答