GoLang全然わからん ~Docker build編~

目次

はじめに

全くGoLangを知らん私が、Windows 11 + WSL2(Ubuntu 21.04) + Visual Studio Codeで勉強していくログです。

img

記事一覧

やったこと

前回でとりあえずLINE Notifyに通知が送信できるようになったので、少し実用的なことをしてみた。

Dockerコンテナ化

適当な記事を参考に、Dockerfileを作成する。

適当とかいいつつも、実際には公式ドキュメントを参考にしました。

Build your Go image

以下のように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のイメージが更新されました。すごい。

katakura/synology-line-notify

実際に使えるものができた

今回のGoLang練習プログラムは、実際に自分で欲しかったものになります。
Synology NASの通知機能は標準でメール、Web通知、スマフォ通知などが対応しているのですが、他にWebhookもサポートしています。

しかし、こちらのWebhookで指定できるPOSTデータのフォーマットがカスタマイズできなかったため、今回のline-notifyを間に挟んで実現が可能でした。

詳しくは、GitHub上のREADME.mdを参照ください。

今回のまとめ

  • GoLangというよりも、GitHub Actions, DockerHub, Synology NAS系の情報収集が主だった。
  • しかし、これはこれで何かの目的をもって学習する(一粒で2度、3度おいしい)のは良いことだ