试图在Bluemix上运行Swift Vapor - 404 Not Found:请求的路由不存在

Dan*_*lla 6 cloud-foundry swift vapor ibm-cloud

我正在试图弄清楚如何在IBM Bluemix中部署使用Vapor框架的Cloudfoundry应用程序.

IBM正在为他的平台使用他的框架Kitura开发服务器端Swift应用程序提供设施和指导.我认为作为Cloudfoundry提供者,使用正确的Swift buildpack,我们必须能够部署通用服务器端Swift代码.

最后,在学习CF的部分时,我达到了使用CloudFoundry CLI的程度:

  1. 我正在连接到Bluemix API端点(api .eu-gb .bluemix .net)
  2. 登录确定(将超时设置env.var CF_DIAL_TIMEOUT扩展为20后)
  3. 做一个"cf推".它创建应用程序并上传和编译所有内容.
  4. 应用程序状态为"正在运行".

但是当我加载页面(https://sommobilitatcore.eu-gb.mybluemix.net/)时,我得到:

404 Not Found: Requested route ('sommobilitatcore.eu-gb.mybluemix.net') does not exist.
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我吗?谢谢!

一些背景:

manifest.yml:

applications:
- path: .
  memory: 256M
  instances: 1
  name: SomMobilitatCore
  disk_quota: 1024M
  buildpack: https://github.com/IBM-Swift/swift-buildpack.git
Run Code Online (Sandbox Code Playgroud)

Procfile

web: App
Run Code Online (Sandbox Code Playgroud)

(main.swift在Source/App /中)

在Vapor Config文件中没有配置端口,然后Vapor正在尝试侦听端口80:

import Vapor
import HTTP

let drop = Droplet()

let _ = drop.config["app", "key"]?.string ?? ""

drop.get("/") { request in
    return try drop.view.make("welcome.html")
}

(...)

let port = drop.config["app", "port"]?.int ?? 80

// Print what link to visit for default port
drop.serve()
Run Code Online (Sandbox Code Playgroud)

更新:

最后让它在没有Procfile,manifest.yml的情况下工作

- path: .
  instances: 1
  memory: 256M
  disk_quota: 1024M
  name: SomMobilitat4
  command: App --env=production --workdir="./"
  buildpack: swift_buildpack
Run Code Online (Sandbox Code Playgroud)

和/Config/production/servers.json:

{
    "production": {
        "port": "$PORT"
    }
}
Run Code Online (Sandbox Code Playgroud)

我既没有在main.swift文件中指定port变量.随着更新的Vapor版本:

import Vapor
import HTTP

let drop = Droplet()

drop.get("/") { request in
    return "hello vapor in bluemix cloudfoundry"
}


drop.run()
Run Code Online (Sandbox Code Playgroud)

如果您是Cloudfoundry或IBM Bluemix的新手,这是一种工作方式:

  1. 您在Cloudfoundry提供程序中注册(例如:bluemix)
  2. 你在当地有Vapor项目.
  3. 使用以下短行添加一个.cfignore文件:Packages /以避免将包上传到服务器.
  4. 添加提到的manifest.yml文件.
  5. 下载并安装Cloudfoundry CLI:https://docs.cloudfoundry.org/cf-cli/

    使用CLI:

  6. cf api https://api.eu-gb.bluemix.net

  7. cf登录
  8. cf推

Vad*_*erg 1

要在 Bluemix 上运行 Vapor 应用程序:

  1. 添加Config目录servers.json(仅使用这些名称)。servers.json应包含以下内容:
        {
            “我的服务器”:{
                “端口”:“$端口”
            }
        }
      

它将指示 Vapor 启动一个myserver以从 Bluemix 使用的环境变量获取的端口命名的服务器$PORT

  1. 在您的 中Procfile,添加--workDir=.参数,因此它将包含:

    网络:应用程序--workDir =。
    

    Config它将指示 Vapor在运行时在当前目录中查找目录。