ECR
この章の目標¶
この章ではLaravelを立ち上げるためにDockerの準備を行います。
やること¶
- ECRの作成
- dockerのビルド
- ホストマシンでやる的なこと
- ECRへのpush
- aws cli のログイン
ECRの作成¶
Dockerの保管にはAWSのDockerマネージドサービスである "Elastic Container Registry" を使用します。
イメージとしてはDockerHubのAWS版のようなものです。
前提としてはECRをTerraformで管理しません。
Terraformは1環境(STG/PRD毎)の定義のために使用しますが、Dockerイメージは一般的に複数環境にまたがって共通のものを使用します。
IaCは非常に便利ですが、100%コード化するべきなのかは適宜判断しましょう。
ECRはAWSコマンドから作成します。
nginx
と app
(Laravel)'の2つのリポジトリを作成します。
$ aws ecr create-repository --repository-name nginx $ aws ecr create-repository --repository-name app
作成されたかの確認します。
$ aws ecr describe-repositories --query 'repositories[].repositoryName' [ "nginx", "app" ]
Dockerのビルド¶
ハンズオンリポジトリへチェックアウト
$ cd /path/to/introduction-terraform-example/laravel
nginxのビルド
$ export ECR_URI_NGINX=$(aws ecr describe-repositories --repository-names nginx --query 'repositories[0].repositoryUri' --output text) $ docker build -t ${ECR_URI_NGINX} -f docker/nginx/Dockerfile .
Laravelのビルド
$ export ECR_URI_APP=$(aws ecr describe-repositories --repository-names app --query 'repositories[0].repositoryUri' --output text) $ docker build -t ${ECR_URI_APP} .
ECRへのpush¶
ECRへログインします。
$ $(aws ecr get-login --no-include-email)
nginxのpush
$ docker push ${ECR_URI_NGINX}
Laravelのpush
$ docker push ${ECR_URI_APP}