メモ > サーバ > サービス: AWS > ECR+ECS+Codeシリーズで自動デプロイ: デプロイ用イメージを登録
■ECR+ECS+Codeシリーズで自動デプロイ: デプロイ用イメージを登録
■プログラムをイメージに含める
※Dockerfileの内容は、本当にこれでいいのかは、改めて確認したい
Dockerfileでコピーしたうえで、docker-compose.ymlでファイル同期する…という仕組みにしているが、二重に共有しているのは微妙な気はする
プログラムをイメージに含めるようにDockerfileを修正する
また、Dockerfile内から上階層のファイルを参照できるように、docker-compose.ymlでbuildの設定を調整する
ローカルでの開発に難が出ないように、ボリュームの同期は無くさずに置いておく
docker\ecr_php81_apache\docker\php\Dockerfile の最後に以下を追加
COPY docker/php/php.ini /usr/local/etc/php/conf.d/php.ini
COPY . /var/www
docker\ecr_php81_apache\docker-compose.yml のbuild部分を調整
build: ./docker/php
↓
build:
context: .
dockerfile: ./docker/php/Dockerfile
起動を確認しておく
$ cd docker/ecr_php81_apache
$ docker-compose build
$ docker-compose up -d
http://localhost/ にアクセスし、index.php の内容が表示されることを確認する
$ docker-compose down
■リポジトリの作成
※AWSコンソールで作業
Elastic Container Registry → リポジトリを作成
※初めてアクセスした場合、まずは「使用方法」をクリックすると「リポジトリを作成」と同じ画面が表示される
以下の内容でリポジトリを作成(いったん、リポジトリ名を入力する以外は初期値で作成してみる)
なお、「可視性設定」と「リポジトリ名」は後から変更できない
可視性設定: プライベート
リポジトリ名: ecr_php81_apache
タグのイミュータビリティ: 有効
「リポジトリを作成」ボタンを押すとリポジトリが作成される
作成したリポジトリに、タグ「1.0.0」を付けてプッシュする
■イメージをプッシュ
$ cd docker/ecr_php81_apache
$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com
$ docker image build -t ecr_php81_apache -f docker/php/Dockerfile .
$ docker image tag ecr_php81_apache:latest 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/ecr_php81_apache:1.0.0
$ docker image push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/ecr_php81_apache:1.0.0
ECRでリポジトリ名 ecr_php81_apache をクリックし、イメージタグとして「1.0.0」が現れていることを確認する
Docker Composeでの起動も試しておく
docker\ecr_compose_test\docker-compose.yml
version: '3'
networks:
compose_network:
driver: bridge
services:
php:
container_name: ecr_php81_apache
ports:
- 80:80
networks:
- compose_network
image: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/ecr_php81_apache:1.0.0
ファイルを用意できたら以下で起動する
$ cd docker/ecr_compose_test
$ docker-compose build
$ docker-compose up -d
http://localhost/ にアクセスし、index.php の内容が表示されることを確認する
$ docker-compose down
■ECSで手動構築
「Amazon Elastic Container Service(Amazon ECS)」の内容をもとに、以下の指定でECS環境を作ることはできた
コンテナ名: ecr_php81_apache
イメージ: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/ecr_php81_apache:1.0.0
なお今回、参照するコンテナ名が ecr_test から ecr_php81_apache に変わるので、サービス自体を作り直した
サービスを作り直すとき、すべてのタスクを止めてからでないと以下のエラーになるようなので注意
サービスの作成: Container-Test-Service
サービスの作成に失敗しました
サービス 作成に失敗: Unable to Start a service that is still Draining.