Vapor フレームワークを使用する Cloudfoundry アプリを IBM Bluemix にデプロイする方法を見つけようとしています。
IBM は、彼のフレームワークである Kitura を使用してサーバー側の Swift アプリを開発するためのプラットフォームを使用するための設備とガイダンスを提供しています。Cloudfoundry プロバイダーとして、適切な Swift ビルドパックを使用して、一般的なサーバー側の Swift コードをデプロイできる必要があると思います。
最後に、CF について少し学びながら、CloudFoundry CLI で次の点に到達しました。
- Bluemix API エンドポイント (api .eu-gb .bluemix .net) に接続しています
- ログイン OK (タイムアウト設定環境変数 CF_DIAL_TIMEOUT を 20 に拡張した後)
- 「cfプッシュ」を行います。アプリを作成し、すべてをアップロードしてコンパイルします。
- アプリの状態は「実行中」です。
しかし、ページ ( 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 プロジェクトをローカルに持っています。
この短い行で .cfignore ファイルを追加します: Packages/ サーバーへのパッケージのアップロードを回避します。
前述の manifest.yml ファイルを追加します。
Cloudfoundry CLI をダウンロードしてインストールします: https://docs.cloudfoundry.org/cf-cli/
CLI を使用する場合:
CFログイン
CFプッシュ