技術検証：GitHub Actionsを使用してDjangoアプリのDockerイメージをAmazon ECRに自動プッシュしてみた

## はじめに

前回の記事の続きとして、今回はシェルスクリプトで作成したDjangoプロジェクトとDocker関連ファイルを、GitHub Actionsを使用してAmazon Elastic Container Registry（ECR）に自動でプッシュする手順を紹介します。

https://qiita.com/free-honda/items/b489cfab873861392de0

これにより、リポジトリのメインブランチに変更が加えられると、自動でDockerイメージがECRにアップロードされるため、素早くDjangoアプリケーションの開発を進めることができます。

:::note warn
***今回の検証は少し難易度が高いかもしれませんが、ほぼ自分への備忘録として、その手順や実行した内容を記事としてまとめていきます。***
:::

## 前回の振り返り
前回の記事では、シェルスクリプトを使用してDjangoアプリケーションの作成および必要なDocker関連ファイルの準備まで行いました。

```Djangoアプリケーション.
my_django_project/
├── Dockerfile
├── manage.py
├── myproject/                # Djangoプロジェクトのディレクトリ
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── myapp/                    # Djangoアプリケーションのディレクトリ
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations/           # マイグレーションファイル
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py
└── requirements.txt          # 必要なパッケージが記載されたファイル
```

このようなディレクトリ構成を作成し、ブラウザ上でDjangoの初期ページが正常に動作することを確認しました。

:::note
***Djangoの初期ページ（```"The install worked successfully!"```）が表示され、アプリケーションが正しく動作していることを確認済みです！***
:::

![スクリーンショット 2024-12-08 7.26.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/0fa5cf74-dcf9-1dd1-6c8b-2495bd7fb6d4.png)

これを踏まえ、今回の目標は **GitHub Actionsを使用して自動化を進めること** です。

過去の記事ではGitHub Actionsの使い方についても解説しているので、事前準備がまだの方はそちらを参考にしてください。

https://qiita.com/free-honda/items/da83c5dd44650c883164

## 実際にやってみた
今回は、以下の前提条件を満たしている場合を想定して進めます。

:::note warn
- **GitHubリポジトリが作成済み**
- **GitHub Secretsが設定済み**
- **GitHub Actionsのワークフローが準備済み**
- **Amazon ECRリポジトリが作成済み**
:::

これらの設定がまだ完了していない場合は、上記のリンク先の記事を参考に準備を進めてください。

### ローカルからの変更をプッシュ
まず、ローカル環境で適当にファイルを編集し、その変更をGitHubリポジトリにプッシュします。

**以下の手順で、メインブランチに変更を反映します。**

```適当にファイルを編集してから以下のコマンドを実行してください.
# ファイルを編集後、以下のコマンドを実行
git init
git add .
git commit -m "test"
git branch -M main
git remote add origin git@github.com:free-honda/my_django_project.git
git push origin main
```

エラーが発生した場合は、必要に応じて修正してください。

:::note alert
**特に、リモートリポジトリのURLやアクセス権の設定を確認する必要があるかもしれません。**
:::

## プッシュ後の動作確認
変更をプッシュした後、GitHubの「Actions」タブに移動し、ワークフローが正しく実行されているか確認します。

![スクリーンショット 2024-12-08 11.06.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/ec8ecfc1-5ec9-147b-d679-ed0d0c78c05b.png)

ワークフローがエラーなく実行されると、Dockerイメージが正常にECRにプッシュされます。

![スクリーンショット 2024-12-08 11.08.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/99a16713-3136-c618-949e-ae573ff86193.png)

以下のスクリーンショットのように、約41秒後にDockerイメージが正常にプッシュされていることが確認できました。

![スクリーンショット 2024-12-08 11.07.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/0842da2d-cea3-5d7c-efa6-6f26a3636267.png)


さらに、AWS管理コンソールのECRサービス画面で、想定通りDockerイメージがアップロードされていることを確認しました。

![スクリーンショット 2024-12-08 11.09.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/e67ff1b7-9ce8-d543-c917-ef6c216d594b.png)

:::note warn
***これで、GitHub Actionsを使用したECRへの自動デプロイが無事に完了しました！***
:::

次回は、この仕組みを活用してアプリケーション開発をさらに効率化していく手順を紹介します。

## まとめ

この記事では、GitHub Actionsを使用してメインブランチへのプッシュをトリガーに、DockerイメージをAmazon ECRに自動的にデプロイする設定を行いました。

:::note
**このプロセスは、ハッカソンやチーム開発における基盤構築として非常に重要なステップです。この内容を通して、より深い理解を得ることができました。**
:::

最後に、この記事がどなたかの技術的な支えになれば幸いです。今後も、実践的な技術検証を続けていく予定ですので、ぜひ引き続きお楽しみください！

## 関連記事

https://qiita.com/free-honda/items/b489cfab873861392de0

https://qiita.com/free-honda/items/da83c5dd44650c883164

https://qiita.com/free-honda/items/682e29d92e60e2d17681

https://qiita.com/free-honda/items/c771e92e810f9bb563dc