0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

さくらのVPSにDocker+Go+Ginのバックエンドを設定しました。

0
Posted at

環境

  • 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にマージする内容は無いと表示されたので、それで作業を完了にしました。破綻したら修正します。

以上作業メモです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?