[英]Akka remote in docker container
我面臨的困惑是,如何設置正確的配置才能訪問部署在Docker容器中的akka應用程序。 盡管我正在運行virtualbox 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問題,或者當我嘗試使用諸如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系統可以從外界訪問。 泊塢窗容器的IP可以使用內部網絡以及替代猜測它的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.