Deployment
Generating a Build
To build, run go build .
which will generate a binary with the default name of the package. In this case, it will be ./go-boilerplate
unless you change it (which is recommended).
If you have executed the above, you may notice that the version ./go-boilerplate version
is set to 2.x.x-default
during run time. That's because it is the second iteration of this boilerplate. It is recommended that you burn the version into the binary in build time to create versioned builds. To do that, use the following command to build:
go build -ldflags="-w -s -extldflags '-static' -X main.VERSION=<YOUR.VERION.HERE>"
# Example
go build -ldflags="-w -s -extldflags '-static' -X main.VERSION=1.0.0"
./go-boilerplate version
# v1.0.0
Once built, a single binary file is generated. It is an executable file that you can rename and place in any folder as long as your profile PATH can find it. A good place to place it on your local machine would be in /usr/bin
which is where most binaries are.
Native Deployment
If you wish to deploy this service locally, all you need to do is build as per the section above then ship the outputted binary into a location where your terminal's PATH can find it. You should be able to use it just by calling its name in your terminal.
The "Usage" section should get you familiarised with all the parameters that are configurable. Deploying it should not be a problem in any dockerised environment.
Docker Deployment
From a containerisation perspective, I'd encourage you to place this binary in an empty container i.e. FROM scratch
in your Dockerfile. This helps keep the container size to a minimum. When tested on an M1 Mac Machine, we got an 18MB container.