2016-09-21 04:15:39 +00:00
|
|
|
# Go app template build environment
|
|
|
|
|
|
|
|
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
|
|
|
|
- change `PKG` to the Go import path of this repo
|
|
|
|
- change `REGISTRY` to the Docker registry you want to use
|
2016-09-23 05:45:29 +00:00
|
|
|
- maybe change `SRC_DIRS` if you use some other layout
|
2016-09-21 04:15:39 +00:00
|
|
|
|
2016-09-23 05:45:29 +00:00
|
|
|
Dockerfile.in:
|
|
|
|
- change the `MAINTAINER` to you
|
|
|
|
- maybe change or remove the `USER` if you need
|
2016-09-21 04:15:39 +00:00
|
|
|
|
|
|
|
## 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
|
2016-09-23 05:45:29 +00:00
|
|
|
will store incremental state for the fastest possible build. Run `make
|
|
|
|
all-build` to build for all architectures.
|
2016-09-21 04:15:39 +00:00
|
|
|
|
|
|
|
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
|
2016-09-23 05:45:29 +00:00
|
|
|
that tag (see `make version`). Run `make all-container` to build containers
|
|
|
|
for all architectures.
|
2016-09-21 04:15:39 +00:00
|
|
|
|
2016-09-23 05:45:29 +00:00
|
|
|
Run `make push` to push the container image to `REGISTRY`. Run `make all-push`
|
|
|
|
to push the container images for all architectures.
|
2016-09-21 04:15:39 +00:00
|
|
|
|
|
|
|
Run `make clean` to clean up.
|