スクリプトのお勉強 技術

Dockerを使用してGo言語の開発環境を構築する

投稿日:

なんとなくGolangのブロジェクトに機能追加しようと思いました。

Golangの開発用に、Dockerfile等を準備する手順を書いておこうと思います。

サンプルにnfpm

サンプルとして、Forkしたnfpmを題材にします。

まぁなんでもいいんですが一応、目標が合ったほうがやる気が出るので。

環境

  • WSL2
  • ubuntu 24.04 LTS
  • Docker 26.1.0

Dockerfile.golang

nfpmはgolang 1.22なので1.22の最新版を元にします。

FROM golang:1.22.2-alpine
RUN apk update && apk add git build-base
ENV CGO_ENABLED 1
RUN go install mvdan.cc/gofumpt@latest

docker buildからrunまで

dockerをbuildし、testを起動するまでの環境を整えます。

$ docker build . -f ./Dockerfile.golang
$ docker image ls
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
<none>                <none>    0df06e58a41f   3 minutes ago   465MB
### 0df06e58a41f はIMAGE ID
$ docker tag 0df06e58a41f golang-dev:latest
$ docker run --name golang-dev -v `pwd`:/src --rm -it golang-dev /bin/sh

taskfile.dev

nfpmはtaskというmake的なコマンドを前提として設定してあります。

なので以下のようにtaskコマンドをダウンロードしておきます。

$ curl -LO https://github.com/go-task/task/releases/download/v3.36.0/task_linux_amd64.tar.gz
$ tar xfz task_linux_amd64.tar.gz
### カレントディレクトリに./taskコマンドを置く

test

Docker内で、testは以下のようにできます。

# cd /src
# ./task test
...
--- PASS: TestIgnoreUnrelatedFiles (0.00s)
PASS
coverage: 22.0% of statements in ./...
ok      github.com/goreleaser/nfpm/v2/rpm       5.031s  coverage: 22.0% of statements in ./...

build

buildは以下のようにできます。最近のgitは脆弱性対策としてsafe.directoryを指定する必要があります。

# git config --global --add safe.directory /src
# ./task build

終わりに

buildまでの手順を記述しました。

とっさになかなか出ないのでメモ書きとして使えればいいかなと思います。

参考

https://qiita.com/___yusuke49/items/0f6577b0b6af5f63671b
https://qiita.com/KEINOS/items/fd6a299961e3b8f3864f

-スクリプトのお勉強, 技術

執筆者:

関連記事

Python3でMongoDBを使ってみる(MongoEngine)

仕事している過程で、ふと疑問に思うことがありました。非同期についてです。 非同期問題を解決する方法はたくさんあると思いますが、MongoDBで解決できるのかが気になったので試してみました。 非同期問題 …

CentOS7 + Django2.2 + uwsgi + nginx 連携方法

Djangoとnginx連携方法 以前はApache経由で連携しましたが、今回はnginxと連携する方法を記述します。 環境 設定した環境は以下です。 OS: CentOS7Python3.6.8 ( …

Mojolicious XML-RPC Pluginの開発(1)

はじめに 最近、お仕事関連で、perlとWebアプリケーションを触っています。 両方一度にお勉強、ということで、perlのWAF(Webアプリケーションフレームワーク)を調べてみようと思いました。 こ …

seaborn + Pandas + Python によるグラフ描画(その1: 準備編)

グラフ描画してみよう 今現在の仕事で、グラフ描画する可能性があるので、少し練習してみようと思います。 題材について 突然ですが、私は確定拠出型年金に加入しています。証券会社はSBI証券 にしています。 …

CSSで注釈を自動ナンバリングする

お仕事で、注釈をつける事がありました。 一瞬で回答できなかったので、ブログネタとして調べてみました。 注釈、とは この意味の注釈とは 「難しい単語]※1 ※1 こういう意味です で「※1」にリンクが張 …

google オプトアウト Click here to opt-out.