我使用docker
和docker-compose
部署并运行在端口5555上运行的Java应用程序。
我以docker-compose -f docker-compose.yml up -d
的身份运行
但是,如果我在运行docker容器的服务器外部运行telnet命令,则会收到Connection refused
消息。如果在服务器中运行它,一切都会很好。
因此要检查这些事情:
$:docker-compose ps
$:ufw状态
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
5555/tcp ALLOW Anywhere
5432 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
5555/tcp (v6) ALLOW Anywhere (v6)
5432 (v6) ALLOW Anywhere (v6)
docker-compose.yml
version: '3'
services:
db:
container_name: db
image: postgres
restart: always
ports:
- 5432:5432
auth:
container_name: auth
image: registryimg
restart: always
stdin_open: true
tty: true
ports:
- 5555:5555
Dockerfile
FROM openjdk:8-jre
ADD target/auth.jar app.jar
EXPOSE 5555
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
更新1
从我容器的docker日志中,我发现应用程序已正确绑定到所需的端口:
2019-01-18 10:18:11.481 DEBUG 1 --- [ntLoopGroup-2-1] io.netty.handler.logging.LoggingHandler : [id: 0xaf27337e] REGISTERED
2019-01-18 10:18:11.485 DEBUG 1 --- [ntLoopGroup-2-1] io.netty.handler.logging.LoggingHandler : [id: 0xaf27337e] BIND: localhost/127.0.0.1:5555
2019-01-18 10:18:11.489 DEBUG 1 --- [ntLoopGroup-2-1] io.netty.handler.logging.LoggingHandler : [id: 0xaf27337e, L:/127.0.0.1:5555] ACTIVE
更新2
我从家用计算机运行telnet命令telnet myhost 5555
,但出现错误:
Trying myhost...
telnet: Unable to connect to remote host: Connection refused
完成后,我查看了我的容器日志,它们是空的(netty没有注册任何连接)。
否则,我想指出的是,如果我通过telnet在其中装有potgresql的另一个容器中-一切正常。
答案 0 :(得分:0)
好的答案就是认为您要绑定的主机。
在我的情况下,netty服务器是这样绑定的:
BIND: localhost/127.0.0.1:5555
我将其更改为:
BIND: 0.0.0.0/0.0.0.0:5555
它就像一种魅力!