我有基于 Ktor 的超简单 udp 服务器:
fun main() = runBlocking {
val server = aSocket(ActorSelectorManager(Dispatchers.IO))
.udp()
.bind(InetSocketAddress("localhost",9090))
while (true) {
println(server.incoming.receive().packet.readText())
}
}
而且我在 host/my-pc 上没有问题,但它在 docker 上不起作用。它正在运行,但它不接收 UDP 数据包。
那是我的 Dockerfile:
来自 phusion/baseimage
维护者 cayzerok@gmail.com
暴露 9090/udp
运行 apt-get update && apt-get install -y default-jre-headless
音量/数据
复制 *.jar /app/server.jar
运行 apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
CMD ["java", "-jar", "/app/server.jar"]
这就是我的“docker run”命令:
docker run -p 9090:9090/udp cayzerok/sample
我究竟做错了什么?原因一定是在服务器上,我用docker-udp-listener测试了一个客户端。
感谢关注!