天将奔烈

日々の記録や学習内容を書いていきます

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&ACMSSL化対応を書いたのでメモ

ACMSSL証明書の取得

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で書いてみようと思う。

うん、オーバースペックなのはわかってるんだ。でも勉強のためなんだ。

ja.reactjs.org

 

バックエンドはGo×echoで書いてみようと思う。

これは使い慣れてるしシンプルに実装したいから特になにも考えずの選択。

github.com

 

絶対途中で「なんでブログだけのためにこんな大掛かりな事してるんだ・・・」とか思いそうだけど、実装途中の進捗報告もこのブログでやっていければと思う。

 

頑張る。。

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%の確率で

「仕事が忙しくて勉強する時間がない」

「成果になるかわからないと初められない」

「少しの費用も先行投資できない」

等々が返ってくる。

 

うん、、、まぁ気持ちはわかるんだけども、そんな上手い話が自分の所に転がってきたらまず詐欺を警戒する。

 

極端な例で例えると「東京大学に合格したいけど勉強はしたくない」って言ってるようなもので、そんなので合格できるのは一部の天才だけだよね。

 

どんな事でも先ずは勉強に時間を投資したり、教材の購入費などにお金を使うなど「痛み」に先行投資しない事には成功は得られないと思った方がよいかなと思う。

 

ふとした時に自分もよくこういう考え方をしていることがあるので自戒を込めて。