GoLang全然わからん ~Docker build編~
はじめに
全くGoLangを知らん私が、Windows 11 + WSL2(Ubuntu 21.04) + Visual Studio Codeで勉強していくログです。
記事一覧
- インストール編
- httpレスポンス&リクエスト編
- Docker build編 (今回の記事)
やったこと
前回でとりあえずLINE Notifyに通知が送信できるようになったので、少し実用的なことをしてみた。
Dockerコンテナ化
適当な記事を参考に、Dockerfileを作成する。
適当とかいいつつも、実際には公式ドキュメントを参考にしました。
以下のようにDockerfileを作成して、サクっとビルド。普通に動いた。
$ cat Dockerfile
# syntax=docker/dockerfile:1
FROM golang:1.18-alpine
WORKDIR /app
COPY go.mod ./
#COPY go.sum ./
RUN go mod download
COPY notify.go ./
RUN go build -o /notify
EXPOSE 8080
CMD [ "/notify" ]
$ docker build -t synology-line-notify .
$ docker run -p 3000:8080 -e LINE_TOKEN=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA synology-line-notify
start server
GitHubにレポジトリを作成して公開
READMEもちゃんと(?)書いて、公開しました。
公開に伴ってgo.modファイル内も修正。
https://github.com/katakura/synology-line-notify
ついでにGitHub Actionsも
ワークフローは以下の方のサイトを参考に作成しました。
GitHub Actions, DockerイメージをビルドしてDocker Hubにpushする(アクセストークン)
少し修正したものを、.github/workflows/docker-image.ymlに配置することで、GitHubのmainブランチにpushすると、勝手にDockerHubのイメージが更新されました。すごい。
実際に使えるものができた
今回のGoLang練習プログラムは、実際に自分で欲しかったものになります。
Synology NASの通知機能は標準でメール、Web通知、スマフォ通知などが対応しているのですが、他にWebhookもサポートしています。
しかし、こちらのWebhookで指定できるPOSTデータのフォーマットがカスタマイズできなかったため、今回のline-notifyを間に挟んで実現が可能でした。
詳しくは、GitHub上のREADME.mdを参照ください。
今回のまとめ
- GoLangというよりも、GitHub Actions, DockerHub, Synology NAS系の情報収集が主だった。
- しかし、これはこれで何かの目的をもって学習する(一粒で2度、3度おいしい)のは良いことだ