問題タブ [12factor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3333 参照

ruby-on-rails - 12要素アプリケーションでの構成の管理

私はHerokuでRailsを使用することを楽しんでいます。そのように、変更をコミットしxyz.ymlて再デプロイすることなく、Herokuアプリの構成プロパティを調整できます。

RailsアプリのYaml構成ファイルを完全に廃止し、ENVに構成を保存することに可能な限り依存することをお勧めします。これは、 12要素の構成原則に沿っています。

ただし、Yamlベースの構成管理からHeroku/12ファクターベースの構成管理への切り替えにはいくつかのトレードオフがあります。

  • デプロイ(qa、stage、prod、dev、demo、labs)の急増がYamlファイルの急増につながる可能性があるのは事実ですが、コピー&ペーストして新しい構成プロファイルを作成するのは非常に簡単です。Herokuのあるデプロイメントから別のデプロイメントに構成プロファイルを「コピー」する方法がわかりません。
  • 構成データをリポジトリに保存するということは、Herokuの場合、デプロイと構成、およびアプリケーションが1回の操作で実行されることを意味します。構成をYamlファイルからENV変数に移動する場合は、デプロイ後に別の手順でアプリケーションを構成する必要があります。

プライベートアプリケーションで12ファクタースタイルの構成を使用したことのある人、および多くの展開にわたって多くの構成変数をどのように管理したかについて聞きたいと思います。

  • 新しい展開をすばやく構成するにはどうすればよいですか?
  • リポジトリではない場合、構成変数の信頼できるソースをどこに保持しますか?開発者間でどのように配布しますか?

ありがとう!

0 投票する
0 に答える
288 参照

ember.js - 12 ファクター アプローチとクライアント側の Web アプリ

この質問は非常に自由回答ですが、(1 ページの) クライアント側 Javascript アプリケーションに対する 12 ファクターのアプローチについて説明しているリソースはありますか? EmberJS を使用して Web アプリを構築するための 12 ファクター アプローチを考慮すると、さらに効果的です。

0 投票する
2 に答える
602 参照

node.js - 12Factor アプリのコードベースの要素を分割する必要があります

私は最近、12Factor アプリに非常に魅了されています。これは、私が従わなければならない強力なガイドラインであるためです。そのため、現在取り組んでいるプロジェクトで、それらを使用することにしました。私は自分のコード構造に疑問を持っていますが:

私は新しい仕事を生み出すだけのウェブサイトを持っており、人々はそこで仕事の結果を調べることができます. ジョブは分散キュー (ftm Redis) に入れられ、ワーカーが各ジョブを取得して実行します。コードベースを 2 つに分割することにしました。

  • ジョブをキューに入れ、ユーザーが結果にアクセスする実際のサイト。
  • 完全に自律的な労働者。

通信 (キューイングなど) をカプセル化するノード パッケージが中間にあり、ノード間の唯一の通信は Redis 経由です。

そのため、分散システムを構築しているため、これが 12factor と一貫性があることを確認したかっただけです。そうでない場合は、いずれかを起動する起動スクリプトを使用して、1 つのコードベースですべてをビルドする必要がありますか?

助けてくれてありがとう

0 投票する
1 に答える
3440 参照

django - Heroku に Django アプリをデプロイする: 環境変数を .env ファイルに手動で設定できますか? autoenv、heroku-config などのツールをインストールする必要がありますか?

私の目標:

Heroku で Django アプリを構築するための "The Twelve-Factor App" 方法論に従うつもりです。

序章:

「Heroku での Django 入門」クイック スタート ガイドに従っています。現時点では、次のディレクトリ構造があります。

django-toolbelt をインストールし、単純な Django アプリケーションを作成し、Procfile でプロセスを開始しました... すべて正常に動作しているように見えましたが、Heroku 環境用にアプリケーションを構成して追加したときに問題が発生しました。

私のsettings.pyファイルの一番下に。

アプリケーションのリポジトリを Heroku にプッシュし、ブラウザーでアプリを$ heroku open正常にアクセスしましたが、ローカル:dj_database_url.config() 空の辞書が返されました。

ローカル:

OS X 10.8.4
pip==1.4.1
virtualenv==1.10.1
virtualenvwrapper==4.1.1
wsgiref==0.1.2
ポート 5432 で実行されている Postgres.app

環境変数:

hellodjango_venv:

Django==1.5.2
dj-database-url==0.2.2
dj-static==0.0.5
django-toolbelt==0.0.1
gunicorn==18.0
psycopg2==2.5.1
static==0.4

これは私の wsgi.py ファイルにあるものです:

これは私のmanage.pyファイルにあるものです:

これは私のProcfileにあるものです:

環境変数:

Heroku の場合:

環境変数:

リサーチ:

環境に構成を保存する: The Twelve-Factor App から

@adamwiggins は次のように書いています。

Twelve-Factor アプリは構成を環境変数に保存します。環境変数は、コードを変更せずにデプロイ間で簡単に変更できます。設定ファイルとは異なります。

dj_database_url.config()空のオブジェクトを返しています: Heroku フォーラムから

@chrisantonic は次のように答えました。

... dj_database_url.config() は、Heroku 環境変数から Postgres 認証情報を取得します。しかし、ローカル マシンでは、これらの変数は存在しません。それらを /venv/bin/activate シェルスクリプトに配置する必要があります...そこに変数を配置します。
DATABASE_URL = "xxx"
export DATABASE_URLのようなもの
必要なものごとに。次に...「無効化」...そして...もう一度「有効化」して再起動します。

Django および Heroku の使用を開始する手順で ImproperlyConfigured エラーが発生しました: Heroku フォーラムから

@jwpe は次のように答えました。

... dj-database-url は、「12 要素アプリの原則」で推奨されているように、開発環境と運用環境でまったく同じ settings.py コードを使用できるため、優れたユーティリティです... dj_database_url.config とは() が行っているのは、DATABASE_URL 環境変数を探し、それを Django の優先形式に解析することです... Heroku で postgres DB を手動で作成および昇格していない場合、DATABASE_URL は存在せず、ImproperlyConfigured エラーが発生します. dj_database_url.config() のデフォルトをローカル DB URL として設定することは、アプリケーションが開発環境で動作することを確認する 1 つの方法です。ただし、必ずしもそれが唯一の方法ではありません。多分代わりに、ローカルの .env ファイルに DATABASE_URL を手動で設定することをお勧めします。次に、Foreman を使用してアプリをローカルで実行すると、環境変数として読み込まれ、dj_database_url がそれを見つけます。したがって、.env には以下が含まれます。

DATABASE_URL=postgres://user:pass@localhost/dbname

つまり、次のsettings.pyものだけが必要です。

DATABASES['default']= dj_database_url.config()

...単一のハードコーディングされたデフォルトの代わりにローカル環境変数を使用する利点は、DATABASE_URL が設定されている任意の環境でコードが実行されることです。ローカル DB の名前を変更する場合、または別の開発マシンでコードを実行する場合は、 settings.py をいじる代わりに .env ファイルを更新するだけで済みます

本番/ステージング/開発の Django 設定を管理するには?: Heroku フォーラムから

@rdegges は次のように答えました。

... 次のような方法でアプリケーションを動作させようとしています。

  • ラップトップでアプリを実行している場合、ローカルの Postgres サーバーが使用されます。
  • ステージング Heroku アプリでアプリを実行している場合、Postgres サーバー アドオンが使用されます。
  • 本番 Heroku アプリでアプリを実行している場合、Postgres サーバー アドオンが使用されます。

これを実現する最善の方法は、環境変数を使用することです!…環境変数は、異なる環境間でアプリケーションの構成を処理する最も洗練された (そしてスケーラブルな) 方法です… 多くの設定ファイルを持つ代わりに、1 つのファイル settings.py を定義し、環境変数を利用してサービス情報と資格情報を取得します... Herokuでは、次を実行して環境変数を手動で設定できます。

... Kenneth Reitz の優れた autoenv ツールが常にあります。これにより、プロジェクト ディレクトリに単純な .env ファイルを定義できます。プロジェクト ディレクトリに入るたびに、これらの環境変数が自動的に設定されるため、特別なことをする必要はありません。プロジェクトを実行するだけで、すべてが期待どおりに機能します。python manage.py runserver

最初の試みとして:

DATABASE_URL.env ファイル に手動で設定しました。DATABASE_URL=postgres://dbuser:dbpassword@ec2-184-73-162-34.compute-1.amazonaws.com:5432/dbname

しかし、$ foreman startコマンドを実行すると:

ブラウザでアプリを開こうとしましたhttp://0.0.0.0:5000

ただし、次のようにdj_database_url.config()返されます。

2 回目の試行として:

DATABASE_URLホストを変更する.envファイルを手動で設定しました。「ec2-184-73-162-34.compute-1.amazonaws.com:5432」を「localhost:5000」に置き換えました。$ deactivateそして$ workon hellodjango_venvまた。

DATABASE_URL=postgres://dbuser:dbpassword@localhost:5000/dbname

しかし、$ foreman startコマンドを実行すると:

ブラウザでアプリを開こうとしましたhttp://0.0.0.0:5000

今回は、次のようにdj_database_url.config()返されました。

3 回目の試行として:

autoenv をインストールしたケネス・レイツが書いたmac-pol:~ oubiga$ pip install autoenv
このクックブックから、次のように記述しました。

私の .bashrc ファイルに。

コマンドを実行します$ foreman start

ブラウザでアプリを開こうとしましたhttp://0.0.0.0:5000:うまくいきました!

しかし、dj_database_url.config()再び空の辞書を返します。

最後の試みとして:

コマンドが気python manage.py runserverになったので調べてみました。

ブラウザでアプリを開こうとしましたが、http://127.0.0.1:8000/うまくいきませんでした!

アンImportError: No module named hellodjango.urlsが育てられました。

ROOT_URLCONF = 'hellodjango.hellodjango.urls'settings.py ファイルを に置き換えたROOT_URLCONF = 'hellodjango.urls'ところ、最終的に機能しました。

予想どおり、dj_database_url.config()空の辞書が返されました。

そう:

今、私は少し圧倒されているように感じます。ここでいくつかのコアコンセプトを誤解しているのではないかと心配しています。

  • Django 開発サーバーの代わりに gunicorn を使用するポイントは何ですか?
  • dj_database_url.config()が完全に入力された辞書を返す場合と、空の辞書を返す場合があるのはなぜですか?
  • .env ファイルで環境変数を手動で設定できますか? autoenv、heroku-config などのツールをインストールする必要がありますか?

前もって感謝します。

0 投票する
1 に答える
177 参照

12factor - 12-Factor: 動的バックエンド構成

Twelve-Factor App のバックエンドのデフォルト設定は、その (ネットワーク) ロケーションを環境変数に入れることですDB=mysql://user:pw@host/db_name

しかし、バックエンド構成がより動的である場合、推奨される方法は何ですか? 私の場合、アプリは環境に応じて 1 ~ n 個のバックエンドを使用できます。私の考えは、JSON のようなシリアル化形式を使用し、それを次のような単一の変数に入れることです。

これはそのような状況に対処するための望ましい方法ですか、それともより良い代替手段は何ですか?

0 投票する
1 に答える
6561 参照

ruby-on-rails - プロジェクト用の特定の gem インストール

Heroku に正常にデプロイするには、アプリの gem ファイルに rails_12factor gem をインストールする必要があります。gem (gem install rails_12factor) をインストールできました。gem list を実行すると、ローカルにインストールされていることが示されます。その特定の gem をバンドルにインストールするにはどうすればよいですか? 私がこの権利を求めているかどうかはわかりませんが、以下に示すように、私が述べたようにローカルにインストールされています。

このパス C:\Users\vern.gem\specs\rubygems.org%443\quick\Marshal.4.8 で rails_12factor-0.02.gemspec を見つけることができます

これが gem 仕様ファイルであることに気付きましたが、プロジェクトの gem バンドルの一部としてインストールする方法がわかりません。

以下は、herokuにプッシュしたときに得られるものです。

ご覧のとおり、rails_12 factor gem が削除されるため、どうすればよいかわかりません。警告も表示されます

警告: すべてのプラットフォーム機能を有効にするには、'rails_12factor' gem を含めてください。詳細については、 https ://devcenter.heroku.com/articles/rails-integration-gems を参照してください。おそらく、私が気づかなかった解決策があり、助けていただければ幸いです。ありがとう

Ruby バージョン 2.0.0 Rails 4.0.0 Windows 7 64 ビット

0 投票する
0 に答える
103 参照

javascript - 12Factor-y の方法で構成および呼び出された GA (または他の JavaScript アプリ)

私のアプリは、1 つのプライベート管理と 1 つの支払いゲートウェイの 2 つの部分で構成され、異なる URL に展開されます。

vhostただし、ドメインは同じファイルで管理されているため、1 つのサーバーに存在できる必要があります。

これらの各 URL で個別に実行するように Google アナリティクスを構成したいのですが、できるだけ多くの構成を環境変数に保存します (12Factor に準拠)。

いつ GA をロードするかを決定するためにアプリ環境 (開発、ステージング、本番) を使用することは避けたいと思います。また、使用する変数をできるだけ少なくしたいと考えています。

私は使用することを考えています:

次に、私のコードで、次を使用します。

これは私のすべての拠点をカバーしていると思います:

  • 設定はENVにあります
  • 各デプロイメントには独自の分析コードがあります
  • 各デプロイメントは独自の文字列のみを維持する必要があります
  • 分析 (開発、ステージングなど) を使用しないデプロイには、javascript は含まれません。

しかし、拡張性が十分ではないのではないかと心配しています。

例:
支払いゲートウェイが当社のプライバシー ポリシーに準拠するために特別な分析コードまたは構成が必要な場合、どのようにアプローチを変更すればよいですか?

2 つのパスを避けたいのですが、2 つのパスが唯一の方法である場合、URL に頼ることはできません。

0 投票する
1 に答える
348 参照

configuration - 環境変数を使用してアプリケーションを構成する

12-Factor アプリでは、環境変数を使用してアプリケーションを構成することをお勧めします。ここまでは順調ですね。接続文字列を設定する必要がある場合、これが良い方法であることは容易に想像できます。

しかし、非常に多くの値を含むより複雑な構成がある場合はどうなるでしょうか? 私は確かに 50 以上の環境変数を持ちたくありませんよね?

どうすればこれを解決でき、それでも 12-Factor Apps の考え方に準拠できますか?

0 投票する
2 に答える
1236 参照

angularjs - 構成に関してangularjsアプリケーションを12要素に準拠させる方法

angularjs アプリを構成 ( http://12factor.net/config ) に関して 12 ファクターに準拠させようとしています。

環境に依存する必要があり、コードに 、 、 などの単語が表示されないdevelopmentはずtestですproduction

envたとえば、変数はbashに保存できます。それらをWebサーバーに渡すことができました。

.erb テンプレート ファイルをerb config.js.erb > config.js.

私はすでにこの記事を見つけましたhttp://mindthecode.com/how-to-use-environment-variables-in-your-angular-application/

しかし、これは大きな嘘であり、Grunt.js がこれを行うのは本当に... とにかく。

12factor の哲学がフロントエンド アプリケーション用に作成されたものではないことは知っていますが、角度のあるアプリケーションは多くの環境のさまざまなサーバーにデプロイでき、適切に処理しようとしても害はありません :)。

ありがとう !

編集:

使用したい設定パラメータは、次のようなものです。

その他の編集:

この男はちょっと答えに行きました:http://bahmutov.calepin.co/inject-valid-constants-into-angular.html私はちょっと醜く、完全にangularjsにバインドされていると思います。しかし、それは動作します!

0 投票する
1 に答える
1420 参照

environment-variables - Docker を使用した 12factor 構成アプローチ

環境変数を使用して Docker の動作を制御するネイティブまたは一般的に受け入れられている方法、つまり 12factor の方法はまだありますか?

私が見た唯一の言語に依存しない方法は、docker run コマンドを -e 変数で汚染することです。私が見た中で最も保守しやすいソリューションは、cat と sed の組み合わせを使用して、.env ファイルを使用して CLI パラメーターを生成することです: https://twitter.com/DataKyle/status/422843345120296960

現在、開発には Vagrant を使用し、テストとデプロイには CI/CD ホステッド プロバイダーを使用し、AWS Elastic Beanstalk をステージングおよび本番 PAAS として使用しています。私たちのアプリには 100 を超える構成可能なパラメーターがあり、そのほとんどは既定値に設定されていますが、各環境ではそれらの約 10 ~ 20 をカスタマイズする必要があります。そのようなコマンドライン変数の膨大なリストを使って docker を実行するのは、ハックすぎるように思えます。

さらに、さらにハッキングせずに、docker ホストから変数 (CI プロバイダーのプレインストールされた Redis または Postgres 資格情報など) を取得することはできません。

私が見つけていないこれに対する解決策はありますか?それとも、これは Docker にとって欠落している部分ですか? それとも、これはどういうわけか哲学的に Docker の哲学に反しているのでしょうか?