java - docker 在错误的端口上运行图像

标签 java docker spring-boot

我有一个 spring boot 应用程序,我创建了这样一个 dockerfile :

FROM java:8
EXPOSE 80
ADD /target/test-server.jar test-server.jar
ENTRYPOINT ["java","-jar","test-server.jar"]

接下来我将按照以下步骤操作:

  1. docker build -t test-server .

  2. docker run -p 8888:80 -t test-server

它可以工作,但在默认为 tomcat 的端口 8080 上。我希望它在 8888 上运行

docker ps 的结果

3debfb5a9084        test-server       "java -jar test-ser"   About a minute ago   Up About a minute   0.0.0.0:8888->80/tcp   thirsty_euclid

顺便说一句,为什么它显示 test-ser 而不是 test-server ?

一般来说,我希望能够在几个不同的端口上运行这个服务器

命令的结果

nmap -A -p8080,8888 localhost

Starting Nmap 7.12 ( https://nmap.org ) at 2016-12-05 20:49 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000059s latency).
PORT     STATE  SERVICE    VERSION
8080/tcp closed http-proxy
8888/tcp open   tcpwrapped

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.45 seconds

最佳答案

从您的评论中有点难以理解,但您的应用程序似乎正在监听容器内的端口 8080,但您已使用 docker run 将主机上的端口 8888 映射到容器内的端口 80 -p 8888:80 -t 测试服务器。这将导致您看到的无法访问的端口。您可以映射到端口 8080:

docker run -p 8888:8080 -t test-server

或者,由于您使用的是 spring boot,如果您想更改监听端口,可以将应用程序属性中的 server.port 的值设置为端口 80。

关于java - docker 在错误的端口上运行图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982011/

相关文章:

java 。图形流 : disparition edges problem

java - 我们是否应该像在 .Net 中那样在 java 中将 Java 源代码和 Junit 测试创建为不同的项目?

django - 如何在AWS ECS docker容器中获取AWS凭证?

java - Logback 不会在 Spring Boot 的 @ExceptionHandler 中记录 ConstraintViolationException

java - 使用自定义对象而不是 @FormParam 作为 JAX-RS 资源输入

docker - 如何使用docker exec安装Composer

docker - 与docker-compose.yml一起使用时未执行Dockerfile中的命令

java - 即使在 Springboot 应用程序的过滤器内指定 Access-Control-Allow-Origin header 后,也无法控制跨源请求

tomcat - 根据动态字段更改 url

java - 在camel DSL中表示来自xml的路由列表