自動ビルドができた(ビルドオンリー)

http://34.67.123.124/

masterにpush

google cloud buildが変更を検知

google cloud buildがビルド開始

google cloud buildがgoogle container registryにpush

↓ここから手動↓

テンプレートからvmインスタンスを作成

古いインスタンスを削除

古いstaticな外部ipを削除

新しいstaticな外部ipを予約

新しくできたstaticな外部ipをmysqlに登録

立ち上がったvmssh

ssh後30:8000をport forwarding

kajirikajiri.hatenablog.com

全部自動にしようかと思ったけど、無料枠のビルド時間が120分。一回のビルドが約1分だったので、超えるかもしれないと思ったのでやめた。

cloud.google.com

vmインスタンスのテンプレートが作れるので、そこらへんうまくやれば、有料なら全部自動できそう。

cloud buildの環境変数にデータベースのパスワードを記載するのは、下記記事によるとあまり良くない方法のようだけど、無料枠だと、うまい方法が思いつかなったので環境変数に設定した。logに残ってしまうのが欠点らしい。(logが見つからなかった。)

qiita.com

手動で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ッタ

とりあえず下記サイトを参考にしてみた。来週開いたときにでも接続できるか見てみよう。(今日接続してみたら落ちてた。。。)

ninna2.hatenablog.com

github.com

無料は縛りが多い気がしている。最初にもらえるgcp無料枠使い切るまではガンガン使ってみようかな

前回はサーバー内でコード書いたからいつ消えるか不安だったけど、今回の修正でimageをrunするようになったので安心。

kajirikajiri.hatenablog.com

テンプレートからVMが作れるの今回知ったけど便利だったから使っていきたい。ポチポチの回数が減る

明日はredisかなー

gcp container port forwarding

gcpでコンテナを実行した場合にport forwardingがしたかった。

下記オプションを有効にしたときにport forwardingしたかった。

docker run でいうと -p 80:3000 のやつ

この VM インスタンスにコンテナ イメージをデプロイします。

f:id:kazuki_nakamura:20200705011929p:plain

しかし、調べてみると、-pはサポートしていない。

cloud.google.com

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

dragonprogrammer.com

このコマンドを使うと80にアクセスが来たら、3000にリダイレクトするようだ。

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

これで無事に成功しました

参考にさせていただきました

cloud.google.com

qiita.com

apps-gcp.com

cloud.google.com

ninna2.hatenablog.com

docs.docker.com

docs.docker.com

dragonprogrammer.com

docs.docker.jp

docker buildに渡した引数を環境変数に渡したかった

大事

ARG YOUR_VARIABLE

ARGのリファレンス

これをしないと、変数が定義されない。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

https://qiita.com/fumihiko-hidaka/items/ac60b920155c31b61eaf#cloudbuildyaml%E3%81%AE%E8%A8%AD%E5%AE%9A

kuromoji.jsとvis.jsが面白そうだった。

kuromoji.jsとvis.js使ってメモ帳作ったら面白そうだなー

形態素解析(単語ごとに文章を解析みたいな)

vis.js(ネットワーク図みたいなものを作れる)

単語ごとに区切ってメモを自動でタグ付けしてみたいな

参考にさせていただきました

github.com

visjs.github.io

ushinji.hatenablog.com

lipsum.sugutsukaeru.jp

efcl.info

stackoverrun.com

今日もwasaviが便利だった

chrome.google.com

サーバー立てた

http://34.69.75.134/db

久しぶりにgcp使ったけど普通にできた良かった。

gcpの無料枠f1-microでやった。

mysqlにもつながったし。あとはredisつなぐかな。前にlambda store使ったらかんたんにできたしやってみよう。

cloud buildできんのかな。やってみよう。githubは連携できたから、image作ってpushして、検知。。。できんのかわからん

lambda.store

256mbのredis無料ってすごい量だなと思うけど、そんなもんなのかな。

適当にキャッシュに使おう

あとはフロントをどっかにホストして。かな。cms。。gatsbyかな

すごい無料:)

.ssh/config使うと便利ってどっかに書いてたから、以前やったけど、なにがいいんだこれ??

っておもってたけど、ファイル切り出せるっていいな便利だ

git

github.com

参考にさせていただきました

qiita.com

qiita.com

cloud.google.com

yourmystar-engineer.hatenablog.jp

qiita.com

qiita.com

qiita.com

www1.fastcloud.jp

docker-composeで立ち上げたmysql serverとnode(express)serverの連携に時間がかかった

mysql

なかなか express serverからmysql serverに接続できなくて辛かった。 ↓対応したqiitaの記事です:)

qiita.com

docker-compose の場合、hostにdocker-composeのservice名を割り当てるの思い出すのに時間かかった。

https://github.com/kajiri-sandbox/node-mysql/blob/c230406a4e1a792d4f61a22a8dc6d002f156ec1b/app/app.js#L6

https://github.com/kajiri-sandbox/node-mysql/blob/c230406a4e1a792d4f61a22a8dc6d002f156ec1b/docker-compose.yml#L18

git

github.com

nodemon

すごい便利 ファイル更新のたびにdocker-compose upしなくて良くなった。 ファイル変更を検知してくれる。

参考にさせていただきました

github.com

github.com

github.com

github.com

www.natswell.com