Replace bash dockerfile generator with go version
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
7e4e0f8551
commit
a338cf58d0
3 changed files with 32 additions and 77 deletions
31
.config/gen-dockerfile.tpl
Executable file
31
.config/gen-dockerfile.tpl
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
FROM golang:alpine as builder
|
||||||
|
|
||||||
|
ADD . /go/src/{{ .package }}
|
||||||
|
WORKDIR /go/src/{{ .package }}
|
||||||
|
|
||||||
|
RUN set -ex \
|
||||||
|
&& apk add --update git \
|
||||||
|
&& go install -ldflags "-X main.version=\$(git describe --tags || git rev-parse --short HEAD || echo dev)"
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
LABEL maintainer "{{ .git_name }} <{{ .git_mail }}>"
|
||||||
|
|
||||||
|
RUN set -ex \
|
||||||
|
{{ if ne .timezone "" -}}
|
||||||
|
&& apk --no-cache add tzdata \
|
||||||
|
&& cp /usr/share/zoneinfo/{{ .timezone }} /etc/localtime \
|
||||||
|
&& echo "{{ .timezone }}" > /etc/timezone \
|
||||||
|
&& apk --no-cache del --purge tzdata \
|
||||||
|
{{- end -}}
|
||||||
|
&& apk --no-cache add ca-certificates
|
||||||
|
|
||||||
|
COPY --from=builder /go/bin/{{ .binary }} /usr/local/bin/{{ .binary }}
|
||||||
|
|
||||||
|
{{ if .expose }}EXPOSE{{ range .expose }} {{.}}{{ end }}{{end}}
|
||||||
|
{{ if ne .volumes `""` }}VOLUME [{{ .volumes }}]{{ end }}
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/{{ .binary }}"]
|
||||||
|
CMD ["--"]
|
||||||
|
|
||||||
|
# vim: set ft=Dockerfile:
|
|
@ -25,6 +25,7 @@ packages:
|
||||||
- name: github.com/github/hub
|
- name: github.com/github/hub
|
||||||
- name: github.com/hashicorp/packer
|
- name: github.com/hashicorp/packer
|
||||||
- name: github.com/hetznercloud/terraform-provider-hcloud
|
- name: github.com/hetznercloud/terraform-provider-hcloud
|
||||||
|
- name: github.com/Luzifer/gen-dockerfile
|
||||||
- name: github.com/Luzifer/git-changerelease
|
- name: github.com/Luzifer/git-changerelease
|
||||||
- name: github.com/Luzifer/password
|
- name: github.com/Luzifer/password
|
||||||
- name: github.com/Luzifer/share
|
- name: github.com/Luzifer/share
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
PWD=$(pwd)
|
|
||||||
PACKAGE=${PWD/${GOPATH}\/src\//}
|
|
||||||
BINARY=$(basename ${PACKAGE})
|
|
||||||
|
|
||||||
GIT_NAME=$(git config --get user.name)
|
|
||||||
GIT_MAIL=$(git config --get user.email)
|
|
||||||
|
|
||||||
if [ -e "${PWD}/Godeps/_workspace/src" ]; then
|
|
||||||
OVERRIDE_GOPATH="/go:/go/src/${PACKAGE}/Godeps/_workspace"
|
|
||||||
fi
|
|
||||||
|
|
||||||
EXPOSE="EXPOSE"
|
|
||||||
|
|
||||||
while getopts ":e:t:v:" opt; do
|
|
||||||
case $opt in
|
|
||||||
e)
|
|
||||||
EXPOSE="${EXPOSE} ${OPTARG}"
|
|
||||||
;;
|
|
||||||
t)
|
|
||||||
TIMEZONE=${OPTARG}
|
|
||||||
;;
|
|
||||||
v)
|
|
||||||
VOLUME="${VOLUME}, \"${OPTARG}\""
|
|
||||||
;;
|
|
||||||
:)
|
|
||||||
echo "Option -$OPTARG requires an argument." >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Header
|
|
||||||
cat <<EOF
|
|
||||||
FROM golang:alpine
|
|
||||||
|
|
||||||
LABEL maintainer "${GIT_NAME} <${GIT_MAIL}>"
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Support old (pre-1.6) Godep style
|
|
||||||
[ -z "${OVERRIDE_GOPATH}" ] || echo -e "ENV GOPATH ${OVERRIDE_GOPATH}\n"
|
|
||||||
|
|
||||||
# Allow setting timezone using `-t Europe/Berlin`
|
|
||||||
[ -z "${TIMEZONE}" ] || cat <<EOF
|
|
||||||
RUN set -ex \\
|
|
||||||
&& apk add --update tzdata \\
|
|
||||||
&& cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \\
|
|
||||||
&& echo "${TIMEZONE}" > /etc/timezone \\
|
|
||||||
&& apk del --purge tzdata
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Build binary
|
|
||||||
cat <<EOF
|
|
||||||
ADD . /go/src/${PACKAGE}
|
|
||||||
WORKDIR /go/src/${PACKAGE}
|
|
||||||
|
|
||||||
RUN set -ex \\
|
|
||||||
&& apk add --update git ca-certificates \\
|
|
||||||
&& go install -ldflags "-X main.version=\$(git describe --tags || git rev-parse --short HEAD || echo dev)" \\
|
|
||||||
&& apk del --purge git
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Allow exposing ports using `-e 3000`
|
|
||||||
(test "EXPOSE" != "${EXPOSE}") && echo -e "${EXPOSE}\n"
|
|
||||||
|
|
||||||
# Allow
|
|
||||||
[ -z "${VOLUME}" ] || echo -e "VOLUME [${VOLUME/, /}]\n"
|
|
||||||
|
|
||||||
# Execution information
|
|
||||||
cat <<EOF
|
|
||||||
ENTRYPOINT ["/go/bin/${BINARY}"]
|
|
||||||
CMD ["--"]
|
|
||||||
EOF
|
|
Loading…
Reference in a new issue