Akka遥控器在码头工人容器中

问题描述 投票:0回答:1

我正面临一些关于正确配置的困惑,这些配置设置为能够访问部署到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,但没有在容器控制台上记录任何内容。

scala docker akka dockerfile akka-remote-actor
1个回答
0
投票

找到我自己的解决方案,不知道它是否归结为绑定配置中的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而不是猜测它

© www.soinside.com 2019 - 2024. All rights reserved.