允许对AKKA-HTTP服务的所有请求

pbpqsu0x  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(182)

同志们!我有一个来自AKKA-HTTP示例的小服务。

import ch.megard.akka.http.cors.scaladsl.CorsDirectives._

object Server extends App{

    val route = cors() {
      path("hello") {
        get {
          complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Привет ёпта</h1>"))
        }
      }
    }

    val routes = cors() {
      concat(route, getUser, createUser, addMessage, getQueue, test, test2)
    }

    val bindingFuture = Http().newServerAt("localhost", 8080).bind(routes)
}

对于CORS i,创建文件resourses/application.conf:

akka-http-cors {

  allowed-origins = "*"
  allowed-methods = ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS"]
}

当我在intellij idea中运行一个项目时,路径工作正常:

但如果我在Docker中运行项目,路由就不想工作了。

Postman 出错:

以下是在所有位置关闭项目时出现的错误:第一次
如何正确配置应用程序的.conf文件,使应用程序接受第三方请求?或者错误隐藏在其他地方?请告诉我!我已经想了两天了。
UPD:文件停靠文件:

FROM openjdk:8-jre-alpine
WORKDIR /opt/docker
ADD --chown=daemon:daemon opt /opt
USER daemon
ENTRYPOINT ["/opt/docker/bin/servertelesupp"]
CMD []

GitHub上的项目:https://github.com/MinorityMeaning/ServerTeleSupp

nr7wwzry

nr7wwzry1#

变更
Http().newServerAt("0.0.0.0", 8080).bind(routes)

Http().newServerAt("0.0.0.0", 8080).bind(routes)
通过绑定到docker内部的localhost,您将无法将流量从外部路由到它。

dced5bon

dced5bon2#

您使用的-p标志的值是什么?如果服务器在Docker中使用8080端口,它应该是8080:8080;如果服务器使用80端口,它应该是8080:80(依此类推)。另外,请确保该端口在Docker中确实是空闲的。
PS:我的声望很低,无法添加评论。

相关问题