movee(モビー) オノデラのブログ

(株)movee代表。週末は自社サービスを作っています。

ECSでLaravelを動かす。でもその前にHTML

Laravel+MySQL+nginx+php-fpmで構築したアプリケーションをECSで動かしたいのだがよくわからないので、HTMLを動かすところから始めていく。

参考にした記事:ECRリポジトリにプッシュしたイメージをECS Fargateで起動する | DevelopersIO

HTMLファイルをECSで動かす

まずは適当なHTMLファイルを作って動かしてみる。

ローカルでイメージ作成

  1. フォルダ作成
  2. index.html作成
  3. Dockerfile作成
  4. フォルダの中にhtmlとDockerfileを入れる
  5. Docker Desktop起動
  6. docker build -t my-apache .でビルド
  7. docker image ls | grep my-apache
  8. docker run --rm -p 80:80 my-apacheでローカル確認

index.htmlとDockerfileを入れるフォルダ(何でも良い)を作成する。 index.htmlはテストコードなので何でも良いが、以下を書いた。

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
    <h1>どうもonodyです!</h1>
</body>
</html>

Dockerfile

FROM httpd:2.4
COPY ./index.html /usr/local/apache2/htdocs/

完全に参考記事をまねた。いつも助かってます、classmethodさん。 あとはDocker Desktopを起動して、コマンドを打つ。ローカルでコンテナで動くindex.htmlが確認できるはず。

ECRにコンテナイメージをプッシュ

1. aws ecr get-login-password --region ap-northeast-1 --profile onody00 | docker login --username AWS --password-stdin 【アカウントID】.dkr.ecr.ap-northeast-1.amazonaws.com
2. docker tag my-apache:latest 【アカウントID】.dkr.ecr.ap-northeast-1.amazonaws.com/my-image:latest
3. docker push 【アカウントID】.dkr.ecr.ap-northeast-1.amazonaws.com/my-image:latest

あとはAWS側でFARGATE作ったりすればいいが設定がいろいろあるので端折る。以下記事のままやればできる。

ECRリポジトリにプッシュしたイメージをECS Fargateで起動する | DevelopersIO

パブリックIPで公開できてることがわかる。 とはいえ、PHPやもっといえばLaravelになるとphp-fpmやnginxのディレクトリ設定、MySQLの設定などいろいろやること多そう。 次はとりあえず生PHPファイルをあげてみる。 経験が少ない作業は1つずつやる。