繁体   English   中英

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

[英]Allow all requests to the AKKA-HTTP service

同志们。 我有一个来自 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 我创建文件资源/application.conf:

akka-http-cors {

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

当我在 intellij idea 中运行一个项目时,该路线运行良好:

在此处输入图像描述

但是如果我在 Docker 中运行该项目,则该路线不想工作。 铬错误: 在此处输入图像描述

Postman 中的错误:

在此处输入图像描述

以下是项目随处关闭时的错误: 在此处输入图像描述 在此处输入图像描述

如何正确配置 application.conf 文件以使应用程序接受第三方请求? 或者错误可能隐藏在其他东西中? 请告诉我。 我想了两天。

UPD:文件 DockerFile:

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

改变

Http().newServerAt("localhost", 8080).bind(routes)

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

通过绑定到 docker 内部的localhost ,您将无法将外部流量路由到它。

您使用的-p标志的值是多少? 如果服务器使用 docker 内的 8080 端口,则它应该是8080:8080 ,如果服务器使用 80(等等),它应该是 8080: 8080:80 还请确认端口在 docker 内确实是空闲的。

PS:我的声誉很低,无法添加评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM