はじめに
前回の記事の続きとして、今回はシェルスクリプトで作成したDjangoプロジェクトとDocker関連ファイルを、GitHub Actionsを使用してAmazon Elastic Container Registry(ECR)に自動でプッシュする手順を紹介します。
これにより、リポジトリのメインブランチに変更が加えられると、自動でDockerイメージがECRにアップロードされるため、素早くDjangoアプリケーションの開発を進めることができます。
今回の検証は少し難易度が高いかもしれませんが、ほぼ自分への備忘録として、その手順や実行した内容を記事としてまとめていきます。
前回の振り返り
前回の記事では、シェルスクリプトを使用してDjangoアプリケーションの作成および必要なDocker関連ファイルの準備まで行いました。
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の初期ページが正常に動作することを確認しました。
Djangoの初期ページ("The install worked successfully!"
)が表示され、アプリケーションが正しく動作していることを確認済みです!
これを踏まえ、今回の目標は GitHub Actionsを使用して自動化を進めること です。
過去の記事ではGitHub Actionsの使い方についても解説しているので、事前準備がまだの方はそちらを参考にしてください。
実際にやってみた
今回は、以下の前提条件を満たしている場合を想定して進めます。
- 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
エラーが発生した場合は、必要に応じて修正してください。
特に、リモートリポジトリのURLやアクセス権の設定を確認する必要があるかもしれません。
プッシュ後の動作確認
変更をプッシュした後、GitHubの「Actions」タブに移動し、ワークフローが正しく実行されているか確認します。
ワークフローがエラーなく実行されると、Dockerイメージが正常にECRにプッシュされます。
以下のスクリーンショットのように、約41秒後にDockerイメージが正常にプッシュされていることが確認できました。
さらに、AWS管理コンソールのECRサービス画面で、想定通りDockerイメージがアップロードされていることを確認しました。
これで、GitHub Actionsを使用したECRへの自動デプロイが無事に完了しました!
次回は、この仕組みを活用してアプリケーション開発をさらに効率化していく手順を紹介します。
まとめ
この記事では、GitHub Actionsを使用してメインブランチへのプッシュをトリガーに、DockerイメージをAmazon ECRに自動的にデプロイする設定を行いました。
このプロセスは、ハッカソンやチーム開発における基盤構築として非常に重要なステップです。この内容を通して、より深い理解を得ることができました。
最後に、この記事がどなたかの技術的な支えになれば幸いです。今後も、実践的な技術検証を続けていく予定ですので、ぜひ引き続きお楽しみください!
関連記事