我有一个 spring boot 应用程序,我创建了这样一个 dockerfile :
FROM java:8
EXPOSE 80
ADD /target/test-server.jar test-server.jar
ENTRYPOINT ["java","-jar","test-server.jar"]
接下来我将按照以下步骤操作:
docker build -t test-server .
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/