6

Vapor フレームワークを使用する Cloudfoundry アプリを IBM Bluemix にデプロイする方法を見つけようとしています。

IBM は、彼のフレームワークである Kitura を使用してサーバー側の Swift アプリを開発するためのプラットフォームを使用するための設備とガイダンスを提供しています。Cloudfoundry プロバイダーとして、適切な Swift ビルドパックを使用して、一般的なサーバー側の Swift コードをデプロイできる必要があると思います。

最後に、CF について少し学びながら、CloudFoundry CLI で次の点に到達しました。

  1. Bluemix API エンドポイント (api .eu-gb .bluemix .net) に接続しています
  2. ログイン OK (タイムアウト設定環境変数 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.

誰でもそれについて私を助けることができますか? ありがとう!

いくつかのコンテキスト:

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 を初めて使用する場合は、次の方法で作業できます。

  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プッシュ

4

2 に答える 2

1

Bluemix で Vapor アプリを実行するには:

  1. Configディレクトリを追加しservers.jsonます (これらの名前を正確に使用してください)。servers.json以下を含める必要があります。
        {
            "私のサーバー": {
                「ポート」:「$ポート」
            }
        }
      

これは、Bluemix が使用する環境変数myserverから取得したポートで指定されたサーバーを開始するように Vapor に指示します。$PORT

  1. に、パラメーターをProcfile追加して、次のものが含まれるようにします。--workDir=.

    web: アプリ --workDir=.
    

    Config実行時に現在のディレクトリでディレクトリを探すように Vapor に指示します。

于 2016-10-22T19:31:18.793 に答える
0

私は Swift と Vapor にはあまり詳しくありませんが、どのクラウド ファウンドリ アプリケーションでも VCAP_APPLICATION 環境変数のポートを使用する必要があります。

Bluemix は、このポート番号を取得できる Swift 用の便利なパッケージを作成しました。

Package.swift ファイルに次の行を追加します。

.Package(url: "https://github.com/IBM-Swift/Swift-cfenv.git", majorVersion: 1, minor: 7)

次に、次のようなものを使用して、アプリケーションを開始するための正しいポート番号を取得できます。

import CloudFoundryEnv

...

let appEnv: AppEnv
appEnv = try CloudFoundryEnv.getAppEnv()
let port = appEnv.port 

詳細については、Bluemix Swift の開始コードをここで確認できます。

https://github.com/IBM-Bluemix/Kitura-Starter

于 2016-10-18T02:45:24.577 に答える