Closed pei0804 closed 7 years ago
イメージで喋るけど
良さそうだけど、docker versionとかdepとか合わせれるの?
合わないんだったらDockerfileかDocker-compose.ymlに書くイメージ。
GAE で秘匿したい環境変数を安全に設定する
このやり方は出来るよ。ただ、なんかフロントの方でここで設定した環境変数が見れるのか少し謎なんよなー。フロント側で秘匿した情報をどうするか悩ましい。
もし、環境変数が参照出来ない場合に有力なのはAWSでいうS3的なやつのCloud Storageを使って、本番ではそっちを参照するようにする。 Upload Images to Google Cloud Storage with React Native and ExpressJS
開発スタイルとしては、普段はフロントはnpm startで自由に開発して、APIを叩くためだけに、サーバーサイドを別で立ち上げて開発するってスタイルになるかな。それのが、GAEの制約を気にせず開発することは出来る。
Cloud Storageの仕様が若干だるいから、そこだけ解説する必要あるかなとは思ってる。 一旦はそこらへん気にせずベースを作ってほしい。
ちなみに、必要なことは、ローカルではローカルの設定ファイルを参照するようにして、本番ではCloud Storageを見るように分岐するってことになるかな。
あー。Node.js立ち上げてくれるなら出来る想定。やってみないとわからないけど。
Node立ち上がってるコンテナ生やしてね
おれも今まであまりフロントでtoken必要になるってケースやったことないから、どうするべきか謎。
Node.js立ち上げ時に環境変数をつけて、参照するイメージ。
んー、正直よくわからん。 NodeとGoどっちも立ち上げるのが、果たして正解なのか?って感じがある。
秘匿するべきデータをそもそもフロントで持つべきなのかってのが、そこから間違ってる気がしてる。なんかいい方法ある気がする。
ちなみに、React + Goで開発してるやつで、環境変数参照出来ない時は、以下のやり方で対応してるよ。 Why I love Create React App – Valerii Sorokobatko – Medium
つまり.env金曜日に喋ってたアレ。
それそれ
ただ、本番用に.envをどうやって容易するかちょい考えたい感がある
部分SSR(めんどい)するか完全SSR(めんどい)するかNodeランタイム立ち上げて環境変数保持するか
まあ、もうちょい時間頂戴。他の部分先にやってほしい。いま他にタスクがあって出来ないw
問題なし。楽しもう。
もし、録音した音声をフロントからサーバーに投げる方法があれば秘匿情報をフロントに一切残さず、いい感じにやり取りはできるけどね。
OAuthもそういう感じってわけじゃないけど、似たような構成でやった時は、秘匿情報はフロントに一切漏らさずやってるから、そうした方がアーキテクチャ的には安全で良い感じはある。なんか、わかるなら情報頂戴。
あーなるほど。ちょい調べてみる。
ひとつ思ったのが、これ以外にもやるべきタスクやストーリーがたくさんあるから、これ後回しにして完成急いだほうがいいかもな。
他のが予想以上に進捗よかったらやるとか
両方って認識で構成書いちゃうからインフラもそうだし、画面もそう。どのように振る舞うかも書くから、空想にならないように適宜調査は必要だね。
出来ることと出来ないことは調べたほうがよさそうやね。
その結果を俺たちは書く。
Reactの.envを使って環境変数でやることにしよう。 どうするかは、CIのデプロイフェーズでファイルをぶち込むロジック入れるようにする。 ※検証が終わったら再度言う。それまでは保留で!
その認識ならリポジトリをprivateにしてもらって、webpackにdevとprodで書き換えるよ。
おれの考えたプランとしては、タスク中に.envを作成して、その.envを元にbuildしてdeployするって感じでいける。
その認識ならリポジトリをprivateにしてもらって、webpackにdevとprodで書き換えるよ。
CIでどうにか出来る領域だから、大丈夫よ!
というより、privateにしないと安全なリポジトリに出来ないってのがあまり好きではない。
https://github.com/wercker/step-create-file こういうのがあるからいけるよ。 あとはファイル作成時に秘匿すべきとこは全部Weckerの環境変数に置き換えれば、どこにもtoken情報残さず運用出来る。
開発時どうする?
開発時は、.env.devみたいな.envを参照する形で実行してほしい。
あーその中身教えてくれる?
いま、どんな値を用意するべきか予想出来ないから、それっぽい変数名とそれっぽい値だけ用意するね。
REACT_APP_API_SCHEME = http://
REACT_APP_API_HOST = localhost:8080
REACT_APP_SPEECH_TOKEN = "1087678318033574"
デプロイ時にさ、環境変数から値を埋め込むシェルスクリプト書いてほしいのが本音どう?
環境変数から値を埋め込むシェルスクリプト書いてほしいのが本音どう?
どういうこと?そこらへんの作業をやってほしいってこと?
sedありやな。
API_Scheme=3000 API_Host=... node app.js
なんか良い書き方があるなら、それでいいよ。 あとで、その.envを教えてくれればおk!
ファイルいらなくてデプロイ時にこう書いて走らせてってこと!
あーなるほど
機密データはサーバ上のランタイム担保
package.jsonのscriptsにはbashから環境変数取得したらええやろ
そっちが都合良い書き方あるならそれでやっていいよ。 後で、どうするべきかを教えてくれたらタスク作る。
GAE GoをDockerでやるべきか否か