go-build-template

A Makefile/Dockerfile example for Go projects.

Github星跟蹤圖

Go app template build environment

Build Status

This is a skeleton project for a Go application, which captures the best build
techniques I have learned to date. It uses a Makefile to drive the build (the
universal API to software projects) and a Dockerfile to build a docker image.

This has only been tested on Linux, and depends on Docker to build.

Customizing it

To use this, simply copy these files and make the following changes:

Makefile:

  • change BIN to your binary name
  • rename cmd/myapp to cmd/$BIN
  • change REGISTRY to the Docker registry you want to use
  • maybe change SRC_DIRS if you use some other layout
  • choose a strategy for VERSION values - git tags or manual

Dockerfile.in:

  • maybe change or remove the USER if you need

Go Modules

This assumes the use of go modules (which will be the default for all Go builds
as of Go 1.13) and vendoring (which reasonable minds might disagree about).
You will need to run go mod vendor to create a vendor directory when you
have dependencies.

Building

Run make or make build to compile your app. This will use a Docker image
to build your app, with the current directory volume-mounted into place. This
will store incremental state for the fastest possible build. Run make all-build to build for all architectures.

Run make container to build the container image. It will calculate the image
tag based on the most recent git tag, and whether the repo is "dirty" since
that tag (see make version). Run make all-container to build containers
for all supported architectures.

Run make push to push the container image to REGISTRY. Run make all-push
to push the container images for all architectures.

Run make clean to clean up.

主要指標

概覽
名稱與所有者thockin/go-build-template
主編程語言Makefile
編程語言Makefile (語言數: 3)
平台
許可證Apache License 2.0
所有者活动
創建於2016-09-21 03:16:57
推送於2025-07-03 19:34:01
最后一次提交2025-07-03 12:33:53
發布數0
用户参与
星數3.3k
關注者數52
派生數435
提交數154
已啟用問題?
問題數55
打開的問題數6
拉請求數58
打開的拉請求數0
關閉的拉請求數21
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?