自動ビルドができた(ビルドオンリー)
masterにpush
google cloud buildが変更を検知
google cloud buildがビルド開始
google cloud buildがgoogle container registryにpush
↓ここから手動↓
古いインスタンスを削除
古いstaticな外部ipを削除
新しいstaticな外部ipを予約
新しくできたstaticな外部ipをmysqlに登録
ssh後30:8000をport forwarding
全部自動にしようかと思ったけど、無料枠のビルド時間が120分。一回のビルドが約1分だったので、超えるかもしれないと思ったのでやめた。
vmインスタンスのテンプレートが作れるので、そこらへんうまくやれば、有料なら全部自動できそう。
cloud buildの環境変数にデータベースのパスワードを記載するのは、下記記事によるとあまり良くない方法のようだけど、無料枠だと、うまい方法が思いつかなったので環境変数に設定した。logに残ってしまうのが欠点らしい。(logが見つからなかった。)
手動でport forwardingできるのは知らなかった
// https://dragonprogrammer.com/deploy-docker-container-gcp/ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
nodeでmysqlを使うと?一定時間で PROTOCOL_CONNECTION_LOST で接続が切れるのは知らなkッタ
とりあえず下記サイトを参考にしてみた。来週開いたときにでも接続できるか見てみよう。(今日接続してみたら落ちてた。。。)
無料は縛りが多い気がしている。最初にもらえるgcp無料枠使い切るまではガンガン使ってみようかな
前回はサーバー内でコード書いたからいつ消えるか不安だったけど、今回の修正でimageをrunするようになったので安心。
テンプレートからVMが作れるの今回知ったけど便利だったから使っていきたい。ポチポチの回数が減る
明日はredisかなー
gcp container port forwarding
gcpでコンテナを実行した場合にport forwardingがしたかった。
下記オプションを有効にしたときにport forwardingしたかった。
docker run でいうと -p 80:3000 のやつ
この VM インスタンスにコンテナ イメージをデプロイします。
しかし、調べてみると、-pはサポートしていない。
You can't map a VM instance's ports to the container's ports (Docker's -p option).
困ったのでググってみた
How to pass options to google compute engine's docker run
このコマンドを使うと80にアクセスが来たら、3000にリダイレクトするようだ。
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
これで無事に成功しました
参考にさせていただきました
docker buildに渡した引数を環境変数に渡したかった
大事
ARG YOUR_VARIABLE
これをしないと、変数が定義されない。were not consumed 変数が使用されていない。みたいなエラーが出る。飲み込まれていないだから、引き込まれていないみたいな意味かもしれない。
ビルドコマンド(command lineで--build-arg HOST="mysql"として、DockerfileでARG HOSTとすることで$HOSTをDockerfileで使える。
docker-compose build --no-cache --build-arg HOST="mysql" --build-arg USER="user"
⭕ ARG YOUR_VARIABLEを使用した場合
Step 6/13 : COPY ./app ./ ---> 0dde883bba56 Step 7/13 : EXPOSE 3000 ---> Running in dec3b2975191 Removing intermediate container dec3b2975191 ---> 2f601fad1391 Step 8/13 : ARG HOST ---> Running in 82dc6f6f8fe5 Removing intermediate container 82dc6f6f8fe5 ---> 212c65a76221 Step 9/13 : ARG USER ---> Running in fc6be699b7a3 Removing intermediate container fc6be699b7a3 ---> 1a0f180413e7 Step 10/13 : ARG PASSWORD ---> Running in fd5aa098a50c Removing intermediate container fd5aa098a50c ---> b78aca9014b7 Step 11/13 : ARG DATABASE ---> Running in bb8f7c1fda38 Removing intermediate container bb8f7c1fda38 ---> 129efdaf2bb4 Step 12/13 : ENV HOST=$HOST USER=$USER PASSWORD=$PASSWORD DATABASE=$DATABASE ---> Running in 5c2942c65073 Removing intermediate container 5c2942c65073 ---> aa81ffb1746d Step 13/13 : CMD nodemon app.js localhost 3000 ---> Running in 058ce0fe2166 Removing intermediate container 058ce0fe2166 ---> 7fec6b0f3edf Successfully built 7fec6b0f3edf Successfully tagged node-mysql_app:latest
❌ ARG YOUR_VARIABLEをしない場合
Step 6/9 : COPY ./app ./ ---> cd0217de3e33 Step 7/9 : EXPOSE 3000 ---> Running in 5d2cc5324d10 Removing intermediate container 5d2cc5324d10 ---> 4e76008edf08 Step 8/9 : ENV HOST=$HOST USER=$USER PASSWORD=$PASSWORD DATABASE=$DATABASE ---> Running in 87358714bf36 Removing intermediate container 87358714bf36 ---> 5dea8fdefe4e Step 9/9 : CMD nodemon app.js localhost 3000 ---> Running in 5329e3634c2f Removing intermediate container 5329e3634c2f ---> 63e5f711ba5b ❌❌❌❌❌ bottom line error !!! [Warning] One or more build-args [HOST USER PASSWORD DATABASE] were not consumed Successfully built 63e5f711ba5b Successfully tagged node-mysql_app:latest
kuromoji.jsとvis.jsが面白そうだった。
kuromoji.jsとvis.js使ってメモ帳作ったら面白そうだなー
形態素解析(単語ごとに文章を解析みたいな)
vis.js(ネットワーク図みたいなものを作れる)
単語ごとに区切ってメモを自動でタグ付けしてみたいな
参考にさせていただきました
今日もwasaviが便利だった
サーバー立てた
久しぶりにgcp使ったけど普通にできた良かった。
gcpの無料枠f1-microでやった。
mysqlにもつながったし。あとはredisつなぐかな。前にlambda store使ったらかんたんにできたしやってみよう。
cloud buildできんのかな。やってみよう。githubは連携できたから、image作ってpushして、検知。。。できんのかわからん
256mbのredis無料ってすごい量だなと思うけど、そんなもんなのかな。
適当にキャッシュに使おう
あとはフロントをどっかにホストして。かな。cms。。gatsbyかな
すごい無料:)
.ssh/config使うと便利ってどっかに書いてたから、以前やったけど、なにがいいんだこれ??
っておもってたけど、ファイル切り出せるっていいな便利だ