Skip to content

Commit

Permalink
Improving documentation around slim binaries
Browse files Browse the repository at this point in the history
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
  • Loading branch information
hairyhenderson committed May 12, 2018
1 parent 615497d commit 45e01ee
Showing 1 changed file with 43 additions and 6 deletions.
49 changes: 43 additions & 6 deletions docs/content/installing.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,18 @@ $ brew install hairyhenderson/tap/gomplate

## Alpine Linux

Currently, `gomplate` is available in the `community` repository for the `edge` release.
`gomplate` is available in Alpine's `community` repository.

```console
$ echo "http://dl-cdn.alpinelinux.org/alpine/edge/community/" >> /etc/apk/repositories
$ apk update
$ apk add gomplate
$ apk add --no-cache gomplate
...
```

_Note: the Alpine version of gomplate may lag behind the latest release of gomplate._

## use with Docker

A simple way to get started is with the Docker image.
A simple way to get started is with one of the [hairyhenderson/gomplate][] Docker images. Images containing [`slim` binaries](#slim-binaries) are tagged as `:slim` or `:vX.Y.Z-slim`.

```console
$ docker run hairyhenderson/gomplate --version
Expand All @@ -52,9 +50,32 @@ $ gomplate --version
gomplate version 1.2.3
```

### use inside a container

`gomplate` is often used inside Docker containers. When building images with Docker 17.05 or higher, you can use [multi-stage builds][] to easily include the `gomplate` binary in your container images.

Use the `COPY` instruction's `--from` flag to accomplish this:

```Dockerfile
...
COPY --from=hairyhenderson/gomplate:v2.5.0-slim /gomplate /bin/gomplate
```

Now, `gomplate` will be available in the `/bin` directory inside the container image.

Note that when using `gomplate` with HTTPS-based datasources, you will likely need to install the `ca-certificates` package for your base distribution. Here's an example when using the [`alpine`](https://hub.docker.com/_alpine) base image:

```Dockerfile
FROM alpine

COPY --from=hairyhenderson/gomplate:v2.5.0-slim /gomplate /bin/gomplate
RUN apk add --no-cache ca-certificates
```

## manual install

1. Get the latest `gomplate` for your platform from the [releases](https://github.com/hairyhenderson/gomplate/releases) page
1. Get the latest `gomplate` for your platform from the [releases][] page
- if available, you may want to download the [`-slim` variant](#slim-binaries)
2. Store the downloaded binary somewhere in your path as `gomplate` (or `gomplate.exe`
on Windows)
3. Make sure it's executable (on Linux/macOS)
Expand All @@ -69,6 +90,17 @@ $ gomplate --help
...
```

### Slim binaries

As a convenience, self-extracting compressed `gomplate` binaries are available from the [releases][] page. These are named with `-slim` as a suffix (or `-slim.exe`). They are compressed with [UPX][].

Generally, these binaries are ~5x smaller than the regular ones, but are otherwise exactly the same.

There are a few reasons that a regular binary is also distributed:
- UPX lacks support for some platforms
- there's a very slight chance that the slim binary could exhibit some form of bug related to being compressed
- there could be environments where self-extracting compressed executables are disallowed

## install with `go get`

If you're a Go user already, sometimes it's faster to just use `go get` to install `gomplate`:
Expand All @@ -78,3 +110,8 @@ $ go get github.com/hairyhenderson/gomplate
$ gomplate --help
...
```

[releases]: https://github.com/hairyhenderson/gomplate/releases
[UPX]: https://upx.github.io/
[multi-stage builds]: https://docs.docker.com/develop/develop-images/multistage-build/
[hairyhenderson/gomplate]: https://hub.docker.com/r/hairyhenderson/gomplate/tags/

0 comments on commit 45e01ee

Please sign in to comment.