将Kitura Swift应用程序部署到IBM Bluemix
当寻找将Kitura Swift应用程序部署到Bluemix的选项时,您可能会跨IBM Cloud Application Tools运行。 IBM Cloud Application Tools提供了一个Mac应用程序,该应用程序可以帮助您将应用程序部署到Bluemix服务器。 不幸的是,我对IBM Cloud Tools并没有积极的经验,因为它一直处于冻结状态,无法将我的应用程序上载到服务器。
在对IBM Cloud Application Tools感到失望之后,我转向了命令行工具。 IBM在Github上提供了一个入门项目,他们在其中讨论使用终端进行部署的过程。 不幸的是,他们错过了很多步骤,目前尚不清楚如何成功进行部署。 希望这篇文章将列出执行到IBM Bluemix的部署所需的所有步骤。
让我们从一个名为“ Hello-Pokemon”的简单Kitura项目开始。 Package.swift文件对Kitura存储库具有单个依赖性,如下所示:
在main.Swift项目中,创建一条返回Pokemon名称的单一路线,如下所示:
如果访问URL http:// localhost:8090 / pokemon,您应该看到“皮卡丘”显示为返回的文本。 这对于我们的实现来说就差不多了。 让我们将其部署到Bluemix。
第一步是在Bluemix上创建一个帐户。 您可以访问Sign Up for IBM Bluemix页面来创建一个免费帐户。 请注意,Bluemix最多可以免费使用30天。 在使用您的凭据创建金额“ Login ”之后。
成功登录后,您将进入“ 仪表板”屏幕。 点击“创建应用”按钮开始使用。
下一个屏幕是模板选择屏幕。 向下滚动并在Cloud Foundry Apps下选择“ Swift运行时 ” 。
提供应用程序的名称,然后单击“创建”按钮,如下所示:
单击“创建”按钮后,将带您进入“入门”屏幕,其中将列出部署该应用程序所需执行的所有步骤。
为了使用命令行部署应用程序,请确保已安装Cloud Foundry CLI。 您可以使用brew安装Cloud Foundry CLI,如下所示:
brew install cloudfoundry / tap / cf-cli
下一步是创建用于部署的配置文件。 该配置文件称为“ manifest.yml ”。 在您的应用程序的根目录中创建“ manifest.yml”,并添加以下内容。
应用范围:
姓名:Hello-Pokemon
随机路由:正确
记忆体:256M
命令:Hello-Pokemon
buildpack:swift_buildpack
命令的值是“ Hello-Pokemon”,它是项目的名称,它来自Package.swift文件,如下所示:
下一步是设置API端点。 从终端运行以下命令。
cf api https://api.ng.bluemix.net
您应该会看到类似的结果。
接下来,您需要使用您创建的Bluemix凭证登录到CloudFoundry。
cf登录
最后推送您的应用程序。
cf推
冲泡咖啡或其他东西,因为这需要一段时间!
Aaaaand我们回来了……。 有错误🙁
让乐趣开始! 运行以下命令以查看日志。
cf记录Hello-Pokemon --recent
这是结果,显示错误日志。
看来我们的应用程序从未通过身体检查! 🙂让我们解决这个问题。 运行以下命令。
cf推送Hello-Pokemon -u进程
您还可以在manifest.yml中添加以下属性,以始终执行运行状况检查。
健康检查类型:过程
重新开始冲泡咖啡,因为这将需要一些时间!
如果一切正常,您将看到以下消息。
恭喜,您刚部署了第一个Swift Kitura应用程序。 访问Hello-Pokemon.mybluemix.net/pokemon以运行您的应用程序。
WTF!
我们将Kitura应用程序配置为在端口8090上运行。这在main.swift文件中实现。 不幸的是,这不是IBM Bluemix运行该应用程序的默认端口。 因此,该应用程序在Bluemix上运行的端口是什么。那不是那么容易找到的。
深入研究源代码,您会发现如果未设置环境变量,服务器将还原为8090。 让我们跳入main.swift文件,并将服务器从8090更改为8080,如下所示。
进行更改后,构建应用程序并再次推送到服务器。
快速构建
cf推送Hello-Pokemon -u进程
让我们再煮一杯热咖啡!
推送完成后。 转到URL http://hello-pokemon.mybluemix.net/pokemon。
是!!! 最后!!! 有效!!
在Kitura Slack频道上,一些用户列出了执行成功部署的更多步骤,但是以我的经验,上述步骤足以使API正常工作。
很棒的工作! 去喝一杯你应得的咖啡!
更新:
正如Alex所指出的,您可以允许代码找出要使用的端口。