環境
- Debian trixie 13.6
- Docker Version: 29.7.2
- Go golang:1.26.4
- Gin github.com/gin-gonic/gin v1.12.0
概要
Docker、Go、git初心者がさくらのVPSにDocker+Go+Ginのバックエンドを設定した時の作業ログです。
やったこと
自分だけの問題ですがsleep_bakのディレクトリー名は既にRonRで使ってしまっていたので別の名前に変えました。
git clone https://github.com/tyoshida431/sleep_bak.git
cd ./src
mv ./../sleep_bak ./sleep_bak_go
cd sleep_bak_go
git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
sudo docker compose up --build
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6bd62e874e89 sleep_bak_go-app "go run ." 2 minutes ago Up 2 minutes 0.0.0.0:xxxx->xxxx/tcp sleep-bak-go
e78e76794527 mysql:latest "docker-entrypoint.s…" 2 weeks ago Up 2 weeks xxxx/tcp, 0.0.0.0:xxxx->xxxx/tcp db
%Cpu(s): 6.8 us, 4.1 sy, 0.0 ni, 0.0 id, 89.2 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 462.1 total, 6.9 free, 390.7 used, 80.5 buff/cache
MiB Swap: 8192.0 total, 6777.6 free, 1414.4 used. 71.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17989 root 20 0 2093164 287556 6352 R 9.3 60.8 0:15.72 compile
compileプロセスが長く動いていたので終わるまで待ちました。
ufwでポート空けました。
sudo ufw allow from xxx.xxx.xxx.xxx to any port xxxx
また、さくらのVPSの設定画面でパケットフィルターを追加しました。
DBにアクセスするユーザー名とDB名などの設定の設定ファイル記述。
vi ./.env
DB_USER=[MySqlに接続するときのユーザー名] # MySQLのアカウント名
DB_PASS=[MySqlに接続するときのパスワード] # MySQLのパスワード
DB_ADDRESS=[DBコンテナ名]:[ポート番号] # MySQLのアドレス名
DB_NAME=[データーベース名] # 接続するデータベース名
GinのコンテナーをDBコンテナーと同じネットワークに参加させます。
sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
xxx bridge bridge local
xxx db_default bridge local
xxx host host local
xxx life-time bridge local
xxx none null local
xxx sleep-bak_default bridge local
xxx sleep_bak_go_default bridge local
sudo docker network connect life-time sleep-bak-go
その後クライアントからブラウザーでアクセスしてJSONが返却されました。
Reactのフロントエンドの.env.productionを今回作成したバックエンドに変更して確認。
npm run build
pythonで簡易WEBサーバーをクライアントに立て単体テストとしてアクセスして手動で動作確認、バックエンド側の動作を確認しました。
sudo docker logs sleep-bak-go
[GIN-debug] Listening and serving HTTP on :xxxx
[GIN] 2026/09/06 - 09:44:00 | 200 | 5.52ms | xxx.xxx.xxx.xxx | GET "/sleep?month=202608"
[GIN] 2026/09/06 - 09:44:01 | 200 | 5.67ms | xxx.xxx.xxx.xxx | GET "/sleep?month=202609"
[GIN] 2026/09/06 - 09:44:05 | 200 | 80.13ms | xxx.xxx.xxx.xxx | POST "/sleep"
[GIN] 2026/09/06 - 09:44:06 | 200 | 7.02ms | xxx.xxx.xxx.xxx | GET "/slee
buildしたフロントエンドをRPiにリリースして動作確認。lintかけて使っていない変数のエラーが出たので修正してフロントエンドのソースをcommit、push。
フロントエンドのgitを
main
|- changeing
|- match_go_backend
とブランチを切りバックエンドのGo対応はmatch_go_backendでやっており動作確認が完了したのでmatch_go_backendをGithubにブラウザーでアクセスしてPull Requestを出してmainにマージしました。作業ブランチをchangeingに戻したいのでgit操作。
git switch changeing
git fetch origin
git merge origin/main
git status
On branch changeing
Your branch is ahead of 'origin/changeing' by 21 commits.
(use "git push" to publish your local commits)
match_go_backendにswitchする前にchangeingでpush貯めてしまっていたっけ? と焦りましたが、これはmatch_go_backendブランチ→main→changeingブランチにローカルで反映したコミットをchangeingブランチにpushしてないからだろうとchangeingブランチにpushしました。
Github見た所、changeingブランチからmainにマージする内容は無いと表示されたので、それで作業を完了にしました。破綻したら修正します。
以上作業メモです。