Memo

メモ > サーバ > サービス: 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.

Advertisement