このドキュメントでは、Docker コンテナを GitHub Actions で自動デプロイする設定手順を説明します。
- Docker 設定
- GitHub Actions 設定
- サーバー側の設定
- トラブルシューティング
Docker 設定#
Dockerfile(静的サイト + nginx)#
静的 HTML を生成し、nginx で配信します。
nginx.conf(SPA 用設定)#
SPA では動的ルート(/item/:id など)を index.html にフォールバックさせる必要があります。
docker-compose-prod.yml(Traefik 連携)#
GitHub Actions 設定#
.github/workflows/prod.yml#
GitHub Secrets の登録#
GitHub CLI を使って登録:
または GitHub Web UI から:
Settings → Secrets and variables → Actions → New repository secret
| Secret名 | 説明 |
|---|
REMOTE_HOST | サーバーの IP アドレス |
REMOTE_USER | SSH ユーザー名 |
REMOTE_KEY | SSH 秘密鍵(全文) |
REMOTE_PORT | SSH ポート(通常 22) |
サーバー側の設定#
1. リポジトリのクローン#
2. リモート URL を SSH 形式に設定#
HTTPS 形式だと GitHub Actions からの git pull で認証エラーになります。
3. GitHub のホストキーを追加#
4. SSH 公開鍵を GitHub に登録#
サーバーの公開鍵を確認:
鍵がない場合は生成:
公開鍵を GitHub に登録:
- アカウントレベル (推奨): GitHub → Settings → SSH and GPG keys → New SSH key
- リポジトリレベル : リポジトリ → Settings → Deploy keys → Add deploy key
注意 : 同じ SSH 鍵は GitHub 上で1つのリポジトリまたは1つのアカウントにしか登録できません。複数リポジトリで使う場合はアカウントレベルで登録してください。
5. docker-compose-prod.yml の作成#
0
トラブルシューティング#
nginx で 404 エラー(SPA)#
動的ルート(/item/:id)にアクセスすると 404 になる場合、nginx.conf に以下を追加:
1
GitHub Actions で git pull エラー#
エラー : fatal: could not read Username for 'https://github.com'
原因 : リポジトリが HTTPS 形式でクローンされている
解決 : SSH 形式に変更
2
エラー : Host key verification failed
解決 : GitHub のホストキーを追加
3
エラー : Permission denied (publickey)
解決 : サーバーの SSH 公開鍵を GitHub に登録
参考リンク#