今更ながらEC2 × Docker × Laravel環境でSSL化する(React環境も整えつつ)


はじめに

EC2上にdockerコンテナ(webコンテナ、php(laravel)コンテナ)を立てたときにSSL化したときのメモを書きます。

dockerを内部に立てずに直でミドルウェアを乗っけてSSLはあると思うのですが、
費用をかけられないプロジェクトなどでコンテナを使ってほしいとかって要求の時に、役立つかなと思ってメモです。

しかも、忘れやすすぎる自分は、ポート何が開いているか忘れていて、ポートで詰まったので、「この構成で作りたくなってはまったら、『5. ポートの調整』を特に思い出してくれよ俺。」という意味での自分用メモとしても残しています。

■ 追記
React環境については、「余談」項目で展開しています。

内容

laravelの動作とかは、laravelなどを検索してみてみてください。

1. EC2準備

VPCやEC2、ドメイン取得は他の記事を参考によろしくお願いいたします。

2. dockerコンテナ群準備

個人的に最強記事だと思っている以下を参照
こういうのってありがたいですよねー

以下とかでも全然OKだと思います。

3. 証明書の取得

これもググれば出てくる感じなので、Let'sEncryptとかで取得してください。

まあ、以下が参考です。

自分はエラーったんで以下を参考にして修正しましたー。

https://sole-color-blog.com/blog/1345/
https://www.it-swarm.jp.net/ja/amazon-ec2/amazon-linux-ec2%e3%81%abcertbot%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/960066120/

4. webコンテナのdockerコンテナをSSL化

ここにも、@ucan-lab さんが登場(笑)
いつもお世話になっております・・・

以下とかでも全然OKです。

まあ、今回localhostで適応するわけではないので、下が早いかもしれませんね。
ほぼ変わりませんが・・・

5. ポートの調整

ここで自分docker使っていることを忘れていて(鳥頭やん・・・)、
どこのポート空けたっけ?みたいになり、
docker-compose.ymlを見てみると

version: "3.8"
services:
  web:
    image: nginx:1.18-alpine
    ports:
      - 10080:443

はい、10080っすね。

これを、AWSコンソールのEC2のセキュリティグループで、10080をカスタムTCPで開けてやると、うまくいきまーす。

以上。

所感

今やサーバレスとかなので、「ACM + ELB」とか「ACM + CloudFront」とか、何ならもっと他の方法もあるので、、はいという感じではありますが、
お客様の要件で全然ある話なので、メモです。

余談

Reactも同時に導入したいよーってときは、
https://www.ritolab.com/entry/34
ここを参照しつつ、

https://note.com/laravelstudy/n/n17fd31eb64e4
ここで補って

npmないって怒られたら、事前に
https://zukucode.com/2019/06/docker-laravel-nodejs.html
ここでDockerfileに入れておく。