github actions × Laravel × docker-composeでCI
CIを実行するに当たって既存のdocker-composeでPHPUnitを実行するようにしたのでメモ。
name: backend_CI on: push: branches: - main pull_request: branches: - main jobs: app-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # dockerコンテナを起動 - name: docker-compose up run: docker-compose up -d - name: Copy Environment File run: docker-compose exec -T app cp .env.example .env - name: Install Dependencies run: docker-compose exec -T app composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - name: Generate key run: docker-compose exec -T app php artisan key:generate ## dbの起動を待機 - name: Wait DB run : docker-compose exec -T db bash -c "mysqladmin --wait --count 60 ping -proot || exit 1" ## マイグレーション - name: migration run: docker-compose exec -T app php artisan migrate --seed ## test実行 - name: Execute tests (Unit and Feature tests) via PHPUnit run: docker-compose exec -T app ./vendor/bin/phpunit
ポイントはDBの起動を待機するところで、これがないとDBの起動前に マイグレーションが実行されて下記のようにエラーが発生する事があるので要注意。
Failed to create mysql.mysql database, SQLSTATE[HY000] [2002] Connection refused
DBの起動待機時に実行している下記のコマンドとオプションを一つずつ解説すると
mysqladmin --wait --count 60 ping -proot || exit 1
-- wait
オプションは接続が確率できない場合にコマンドの実行を中止せずに待機してからリトライする
--count 60
繰り返しの回数
ping
サーバーが使用可能かどうかをチェック。
※リンク参照 dev.mysql.com
ALB&ACMをTerraformで管理
terraformでAL&ACMでSSL化対応を書いたのでメモ
ACMでSSL証明書の取得
resource "aws_acm_certificate" "cert" { // サブドメインを許容できる形にする domain_name = "*.${var.domain_name}" // ネイキッドドメインも保護できるようにする subject_alternative_names = [var.domain_name] // DNS認証にする validation_method = "DNS" tags = { Env = var.env } } resource "aws_acm_certificate_validation" "cert" { certificate_arn = aws_acm_certificate.cert.arn validation_record_fqdns = [for record in aws_route53_record.cert_validation : record.fqdn] } // route53 resource "aws_route53_record" "cert_validation" { for_each = { for dvo in aws_acm_certificate.cert.domain_validation_options : dvo.domain_name => { name = dvo.resource_record_name record = dvo.resource_record_value type = dvo.resource_record_type } } zone_id = aws_route53_zone.zone.zone_id ttl = 60 allow_overwrite = true name = each.value.name records = [each.value.record] type = each.value.type }
ALBの設定
resource "aws_lb" "web" { name = "web-alb" internal = false load_balancer_type = "application" security_groups = [ aws_security_group.alb.id ] subnets = [ aws_subnet.main_a.id, aws_subnet.main_c.id, ] } resource "aws_lb_listener" "web" { load_balancer_arn = aws_lb.web.arn port = "443" protocol = "HTTPS" certificate_arn = aws_acm_certificate.cert.arn ssl_policy = "ELBSecurityPolicy-2016-08" default_action { type = "forward" target_group_arn = aws_lb_target_group.web.arn } } resource "aws_lb_listener_rule" "forward" { listener_arn = aws_lb_listener.web.arn priority = 100 action { type = "forward" target_group_arn = aws_lb_target_group.web.arn } condition { path_pattern { values = ["/*"] } } } // httpのリクエストをhttpsにリダイレクト resource "aws_lb_listener" "http" { load_balancer_arn = aws_lb.web.arn port = 80 protocol = "HTTP" default_action { type = "redirect" redirect { port = "443" protocol = "HTTPS" status_code = "HTTP_301" } } }
デスマ中の投稿
現在デスマ真っ只中で最低でも2日に1回は更新しようと続けていたブログの連続投稿も途絶えてしまった。
今日も絶賛仕事中(23:47分現在)なので今日はサラッと気になったニュースについて感想を述べる。
その気になったニュースとは・・・・
これだ!!
news.yahoo.co.jp
そう、日経平均が30年ぶりに3万円台に回復したというニュース。
コメントを見てると
「実体経済は追いついてない」
とか
「日銀の買い支えによる効果でリスクは大きい」
等などネガティブな見方をしている人が多い印象を受けた。
確かにコロナ禍で飲食店や旅行業などは苦しんでるしなぁ〜とか外出自粛で使い先がないから皆株買ってるのかな〜なんて思ったりもするけど、個人的には株価を戻すのに30年もかかってるという事実が一番気になった。
30年ですよ!?
30年前って僕まだ生まれてないんすよ!!
アメリカの30年の株価推移はこれですよ!!
なんで日本は!!!
・・・
このまま株価も順調に上がって、景気も良くなって希望があふれる世の中になりますように。
さて、デスマに戻ろう。
ブログ移行プロジェクト
今までフロント関連の修得を何年も避け続けてきたけど、本当にそろそろ覚えないとエンジニアとしてヤヴァイみたいな雰囲気を感じ始めた。
じゃあ勉強するかーっていっても何か作るものでもないとモチベーションも上がらないしなーって事で、今はてなブログで書いてるこのブログを自分で作成した独自ドメインのサイトに移行してみようと思う。
WordPressとかで作れば独自ドメインのサイトもすぐ作れるんだけどね。。
今回はフロントの学習ということを念頭にあえて頑張って実装してみようと思う。
技術スタックはFrontをReact×TypeScriptで書いてみようと思う。
うん、オーバースペックなのはわかってるんだ。でも勉強のためなんだ。
バックエンドはGo×echoで書いてみようと思う。
これは使い慣れてるしシンプルに実装したいから特になにも考えずの選択。
絶対途中で「なんでブログだけのためにこんな大掛かりな事してるんだ・・・」とか思いそうだけど、実装途中の進捗報告もこのブログでやっていければと思う。
頑張る。。
SNSで幸福度が下がるというお話
自分自身インスタをやっていて「何故人の日常見てるんだろ」とか思ってちょっと気分が落ちた事があって、
後々調べてみるとSNSは幸福度に影響を与えているという調査結果が出ているようだったのでまとめ。
イギリス王立公衆衛生協会(RSPH)によると、幸福度が下がるSNSのランキングは
1. インスタグラム
2. スナップチャット
3. フェイスブック
4. ツイッター
の順番らしく、インスタグラムが最も心に与える不安感や外見への劣等感などの否定的な影響が、他のSNSよりも高かったそう。
なんでインスタグラムが一位なんだろう・・・??って思って調べて見ると、割と納得できる説明が。
インスタグラムには誰でも自分の良い面を頻繁に投稿して気軽に何度も見れる。そしてそれを見続ける事でそのうちあの人はあんなに楽しそうなのに自分はと比較を行うようになるそうだ。
また、自分のように本来見なくていいはずの人の日常を見る/見られることで監視している/されているような気分に陥る人もいるらしい。
鬱状態の時に見るとさらに悪影響の要素が強くなるらしいので、要注意だ。
仕事関連でよく使うサイト
仕事関連でよく使う学習サイトを列挙してみる
Udemy
何か新しい言語を修得する必要が出てきた時とかに とりあえず評価が高い動画を一本見ておけば結構インプットできるのでおすすめ。 www.udemy.com
DevelopersIO
AWSの公式Docとか見ててもよく分からないって事が多々あるんだけど、 そんな時には大抵classmethodで記事を探せば解決できるという伝家の宝刀。 dev.classmethod.jp
qiita
かなりメジャーだけどこちらもよく使う。 仕事で調べ物で使うこともあれば、なんとなく集中できない時に トレンドに上がってる記事を眺めたりすることもある。 qiita.com
AWS Cloud Tech
Youtuberのくろかわこうへいさんが運営するAWS学習用サイト 今まで何となく理解してた部分とかをしっかり学べるのでマジでおすすめ。 AWSを一から勉強するなら間違いなく入会しておいて方がいいと思う。 aws-cloud-tech.com
Terraform Docs
Terraformの公式ドキュメント インフラ周りをTerraformで構築する機会が増えてきて重宝してる。 色々巡り巡って公式のドキュメントが一番分かりやすいという結論にたどり着いた。 www.terraform.io
他にもいっぱいあるから随時載せていこう。
ノーペインノーゲイン
今日はノーペインノーゲインという言葉について書いてみようと思う。
ノーペインノーゲインとはつまり「痛みなくして得るものなし」ということだ。
色んなビジネスや投資をやるようになってから、同い年の人から「良い副業ない?」とか「何か儲かる話ない?」と聞かれることが多くなった。そういう時に決まって浮かぶのがこの言葉。
どういうのが良いの?とかどんな事に興味あるの?って深ぼっていくと、大抵この「良い副業ない?」や「何か儲かる話ない?」っていう言葉の間に「楽に」って言葉が挟まってるんだよね。
そういう人たちに「こういう副業とかあるみたいよ〜」「こんなのはどうなの〜」って提案するとほぼ100%の確率で
「仕事が忙しくて勉強する時間がない」
「成果になるかわからないと初められない」
「少しの費用も先行投資できない」
等々が返ってくる。
うん、、、まぁ気持ちはわかるんだけども、そんな上手い話が自分の所に転がってきたらまず詐欺を警戒する。
極端な例で例えると「東京大学に合格したいけど勉強はしたくない」って言ってるようなもので、そんなので合格できるのは一部の天才だけだよね。
どんな事でも先ずは勉強に時間を投資したり、教材の購入費などにお金を使うなど「痛み」に先行投資しない事には成功は得られないと思った方がよいかなと思う。
ふとした時に自分もよくこういう考え方をしていることがあるので自戒を込めて。