我试图弄清楚如何在 IBM Bluemix 中部署一个使用 Vapor 框架的 Cloudfoundry 应用程序。
IBM 正在为使用他的平台和他的框架 Kitura 开发服务器端 Swift 应用程序提供设施和指导。我认为作为 Cloudfoundry 提供商,使用适当的 Swift buildpack,我们必须能够部署通用的服务器端 Swift 代码。
最后,在学习一些 CF 的过程中,我通过 CloudFoundry CLI 达到了这一点:
- 我正在连接到 Bluemix API 端点 (api .eu-gb .bluemix .net)
- 登录成功(将超时设置 env.var CF_DIAL_TIMEOUT 扩展为 20 后)
- 制作“cf push”。它创建应用程序并上传和编译所有内容。
- 应用程序状态为“正在运行”。
但是当我加载页面(https://sommobilitatcore.eu-gb.mybluemix.net/)时,我得到:
404 Not Found: Requested route ('sommobilitatcore.eu-gb.mybluemix.net') does not exist.
任何人都可以帮助我吗?谢谢!
一些上下文:
manifest.yml:
applications:
- path: .
memory: 256M
instances: 1
name: SomMobilitatCore
disk_quota: 1024M
buildpack: https://github.com/IBM-Swift/swift-buildpack.git
档案
web: App
(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()
更新:
最后让它在没有 Procfile 的情况下工作,manifest.yml
- path: .
instances: 1
memory: 256M
disk_quota: 1024M
name: SomMobilitat4
command: App --env=production --workdir="./"
buildpack: swift_buildpack
和 /Config/production/servers.json :
{
"production": {
"port": "$PORT"
}
}
我没有在 main.swift 文件中指定端口变量。使用更新的 Vapor 版本:
import Vapor
import HTTP
let drop = Droplet()
drop.get("/") { request in
return "hello vapor in bluemix cloudfoundry"
}
drop.run()
如果您不熟悉 Cloudfoundry 或 IBM Bluemix,这是一种工作方式:
您在 Cloudfoundry 提供商中注册(例如:bluemix)
您在本地拥有 Vapor 项目。
使用以下短行向其添加 .cignore 文件:Packages/ 以避免将 Packages 上传到服务器。
向其中添加提到的 manifest.yml 文件。
下载并安装 Cloudfoundry CLI:https ://docs.cloudfoundry.org/cf-cli/
使用 CLI:
cf登录
比较推