Akka遥控器在码头工人容器中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Akka遥控器在码头工人容器中相关的知识,希望对你有一定的参考价值。
我正面临一些关于正确配置的困惑,这些配置设置为能够访问部署到docker容器中的akka应用程序。虽然我正在运行虚拟机ubuntu VM,但我希望首先能够在转发VM主机上的端口之前从该VM访问容器。 application.conf:
akka {
actor {
provider = remote
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = ${?HOSTNAME} # what should it be? 0.0.0.0 or the assigned docker one like 172.17.0.x but unknown in advance
port = ${?PORT} # 800
bind-hostname = ${?BIND_HOSTNAME} # 127.0.0.1 ?
bind-port = ${?BIND_PORT} # 800 ? xxxx ?
# 30Mb max msg
message-frame-size = 30000000b
send-buffer-size = 30000000
receive-buffer-size = 30000000b
maximum-frame-size = 30000000b
}
}
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}
我的docker文件根据日志正确构建和运行应用程序:
FROM openjdk:8u151
# Env variables
ENV SCALA_VERSION 2.12.4
ENV SBT_VERSION 1.1.1
# Scala expects this file
RUN touch /usr/lib/jvm/java-8-openjdk-amd64/release
# Install Scala
# Piping curl directly in tar
RUN
curl -fsL https://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ &&
echo >> /root/.bashrc &&
echo "export PATH=~/scala-$SCALA_VERSION/bin:$PATH" >> /root/.bashrc
# Mk app dir
RUN mkdir /alor
# Define working directory
WORKDIR /alor
# Add target packaged app
COPY target/universal/stage/ /alor/
# Expose ports
EXPOSE 800
EXPOSE 5150
# Launch the app
CMD ./bin/alor
运行映像后,我在检查容器后尝试访问地址172.17.0.x:800,但没有在容器控制台上记录任何内容。
答案
找到我自己的解决方案,不知道它是否归结为绑定配置中的akka问题,或者原始openjdk映像没有内部绑定本地网络,因为我尝试了不同的bind-hostname = 127.0.0.1 bind-port=xxx
,但设置为例如:
hostname = 172.17.0.2
port = 800
bind-hostname = 0.0.0.0
bind-port = ""
使用172.17.0.2:800
使外部世界可以使用akka系统。 docker容器的ip可以使用内部网络作为well而不是猜测它
以上是关于Akka遥控器在码头工人容器中的主要内容,如果未能解决你的问题,请参考以下文章