Laravel+MySQL+nginx+php-fpmで構築したアプリケーションをECSで動かしたいのだがよくわからないので、HTMLを動かすところから始めていく。
参考にした記事:ECRリポジトリにプッシュしたイメージをECS Fargateで起動する | DevelopersIO
HTMLファイルをECSで動かす
まずは適当なHTMLファイルを作って動かしてみる。
ローカルでイメージ作成
- フォルダ作成
- index.html作成
- Dockerfile作成
- フォルダの中にhtmlとDockerfileを入れる
- Docker Desktop起動
- docker build -t my-apache .でビルド
- docker image ls | grep my-apache
- 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つずつやる。