このドキュメントでは、Docker コンテナを GitHub Actions で自動デプロイする設定手順を説明します。

目次

  1. Docker 設定
  2. GitHub Actions 設定
  3. サーバー側の設定
  4. トラブルシューティング

Docker 設定

Dockerfile(静的サイト + nginx)

静的 HTML を生成し、nginx で配信します。

FWCRCR#F##CCECROOUOUROOXMORPNPNONNPPPDMKYYMuuYYODnnxxS[nIpp.pnttnE"oRammg-gndci32fi8ge/kirnrn0i:aanuxoxn2pgsn:m.x2peta=c"-*agnl::bo,a.legpunljlniidif"psennoil-iorxeusd/gnnattee"etprt,eucAt//"S/andppgabupieub/nmil.xolio/ndcucetoorpnfufft.;d"p/]udbelfiacul/tu.scrnsfhare/nginx/html

nginx.conf(SPA 用設定)

SPA では動的ルート(/item/:id など)を index.html にフォールバックさせる必要があります。

s}ervelsri#gg#l}#l}rieonzzoosrodgiiScc{tvtezppPaaeexi_Attteanr/potirixd_uiny:oyopd8nsn;pn_ni_0ardefrh;m/es/i~eeesxl*sah.t{edlahes1eortxyrcemt$(;a/l/ujCln;prsahglii|coianchsnid$setxneus-;/xr|Cht.ipoteh/nnmxtgtltm/|r;/lijocnplsdgse|"xjpa.puphebptgllm|iilgcc;i,aft|iiimocmnou/|tjsasvbogln|ew"ao;pfpfl|iwcoaftfi2o)n$/j{avascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;

docker-compose-prod.yml(Traefik 連携)

sneercttvjwri_blnrpoaecfuaeeorexericbttttttt-sr-kftsoloerrrrrrwttsie:ndnlaaaaaaotas":krt:tseeeeeerrr:8-n:e:ffffffkat0naxiiiiiise:0eltkkkkkk:f3t::......ia:wehhhhhkl8ot.nttttt-w0rratttttna"kubpppppey:el.....tserrrrmw:ooooiouuuudrtttttdkreeeelurrrreessssw....accccrjjjje____sffff.rrrrgooooznnnnittttp....-retmcunlioltsdmer.dp:yclrpeeeHorwsoitassnrr.tteec(ssso`:o:mylpowvgrueezerbris-s:psde-:ocmcmuyotarrmrieepunsre.oeclsovsme`r)

GitHub Actions 設定

.github/workflows/prod.yml

nocjanoom:pwrngcbbeuoecrasu:sbrptuon:irshrkoyruclutp:afsprpedne-rnliee:l_spocotsn-a-snuwdhwo:c'ino:asie_rypndnmethukpssdy[:a-_:eshoseoc:i_wgpd:::seyrrscgddddsdeereutr:tiedioooo[pibsopbDa:n:pttcccc'ash'gluepa$t/kkkkmtporonpp$m{$:-hpeeeeacaoeytll{e{{eourrrrshtks:uoe{:{|mlt:c]s-ybselcccseh:los$es/oooyr:aDye{ce$mmms'tto/c{rc{pppt]recsrer{oooeusksestesssmetehtestseeer-sc.sepa.rR.c---rCcReERrfffuotEtMEenniMsOMtdddetoO.TOsoooanTRET.ccc-i@EE_ERkkkanm_MK_EeeeeaHOEPMrrrrsOTYOO---tSERTccceT_}TEoooorU}_mmml}S}Upppu}E}SooomREssseReees}---}}ppp-}rrrf/ooocdddj..._yyyfmmmrlllonbdutuopiwln-dd

GitHub Secrets の登録

GitHub CLI を使って登録:

gggghhhhsssseeeeccccrrrreeeettttsssseeeettttRRRREEEEMMMMOOOOTTTTEEEE____HUPKOSOESERYTRT<---~bbboo.dddsyyysh"""/xu2yxs2oxe"u.rrxn_xakxme.eyx"/xixd._xrxsxa"

または GitHub Web UI から:
SettingsSecrets and variablesActionsNew repository secret

Secret名説明
REMOTE_HOSTサーバーの IP アドレス
REMOTE_USERSSH ユーザー名
REMOTE_KEYSSH 秘密鍵(全文)
REMOTE_PORTSSH ポート(通常 22)

サーバー側の設定

1. リポジトリのクローン

cgdit/hcolmoen/eusgeirtn@agmiethub.com:your-org/your-repo.gitcj_front

2. リモート URL を SSH 形式に設定

HTTPS 形式だと GitHub Actions からの git pull で認証エラーになります。

cgdit/hroemmetuesesrenta-muer/lcjo_rfirgoinntgit@github.com:your-org/your-repo.git

3. GitHub のホストキーを追加

ssh-keyscangithub.com~/.ssh/known_hosts

4. SSH 公開鍵を GitHub に登録

サーバーの公開鍵を確認:

cat~/.ssh/id_rsa.pub

鍵がない場合は生成:

ssh-keygen-trsa-b4096-C"your-email@example.com"

公開鍵を 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 の作成

s}ervelsri#gg#l}#l}rieonzzoosrodgiiScc{tvtezppPaaeexi_Attteanr/potirixd_uiny:oyopd8nsn;pn_ni_0ardefrh;m/es/i~eeesxl*sah.t{edlahes1eortxyrcemt$(;a/l/ujCln;prsahglii|coianchsnid$setxneus-;/xr|Cht.ipoteh/nnmxtgtltm/|r;/lijocnplsdgse|"xjpa.puphebptgllm|iilgcc;i,aft|iiimocmnou/|tjsasvbogln|ew"ao;pfpfl|iwcoaftfi2o)n$/j{avascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;

0


トラブルシューティング

nginx で 404 エラー(SPA)

動的ルート(/item/:id)にアクセスすると 404 になる場合、nginx.conf に以下を追加:

s}ervelsri#gg#l}#l}rieonzzoosrodgiiScc{tvtezppPaaeexi_Attteanr/potirixd_uiny:oyopd8nsn;pn_ni_0ardefrh;m/es/i~eeesxl*sah.t{edlahes1eortxyrcemt$(;a/l/ujCln;prsahglii|coianchsnid$setxneus-;/xr|Cht.ipoteh/nnmxtgtltm/|r;/lijocnplsdgse|"xjpa.puphebptgllm|iilgcc;i,aft|iiimocmnou/|tjsasvbogln|ew"ao;pfpfl|iwcoaftfi2o)n$/j{avascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;

1

GitHub Actions で git pull エラー

エラー : fatal: could not read Username for 'https://github.com'
原因 : リポジトリが HTTPS 形式でクローンされている
解決 : SSH 形式に変更

s}ervelsri#gg#l}#l}rieonzzoosrodgiiScc{tvtezppPaaeexi_Attteanr/potirixd_uiny:oyopd8nsn;pn_ni_0ardefrh;m/es/i~eeesxl*sah.t{edlahes1eortxyrcemt$(;a/l/ujCln;prsahglii|coianchsnid$setxneus-;/xr|Cht.ipoteh/nnmxtgtltm/|r;/lijocnplsdgse|"xjpa.puphebptgllm|iilgcc;i,aft|iiimocmnou/|tjsasvbogln|ew"ao;pfpfl|iwcoaftfi2o)n$/j{avascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;

2

エラー : Host key verification failed
解決 : GitHub のホストキーを追加

s}ervelsri#gg#l}#l}rieonzzoosrodgiiScc{tvtezppPaaeexi_Attteanr/potirixd_uiny:oyopd8nsn;pn_ni_0ardefrh;m/es/i~eeesxl*sah.t{edlahes1eortxyrcemt$(;a/l/ujCln;prsahglii|coianchsnid$setxneus-;/xr|Cht.ipoteh/nnmxtgtltm/|r;/lijocnplsdgse|"xjpa.puphebptgllm|iilgcc;i,aft|iiimocmnou/|tjsasvbogln|ew"ao;pfpfl|iwcoaftfi2o)n$/j{avascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;

3

エラー : Permission denied (publickey)
解決 : サーバーの SSH 公開鍵を GitHub に登録


参考リンク