diff --git a/Dockerfile b/Dockerfile index 2177b2e..fe5799c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,39 +2,21 @@ FROM alpine:3.7 ARG POSTFIX_VERSION ARG RSYSLOG_VERSION -ARG IMAGE_VERSION -ARG BUILD_DATE -ARG VCS_REF - -LABEL maintainer="Pierre GINDRAUD " \ - org.label-schema.build-date="${BUILD_DATE}" \ - org.label-schema.name="SMTP server configured as a email relay" \ - org.label-schema.description="This image contains the reliable postfix smtp server configured to be " \ - org.label-schema.url="https://github.com/Turgon37/docker-smtp-relay" \ - org.label-schema.vcs-ref="${VCS_REF}" \ - org.label-schema.vcs-url="https://github.com/Turgon37/docker-smtp-relay" \ - org.label-schema.vendor="Pierre GINDRAUD" \ - org.label-schema.version="${IMAGE_VERSION}" \ - org.label-schema.schema-version="1.0" \ - application.postfix.version="${POSTFIX_VERSION}" \ - application.rsyslog.version="${RSYSLOG_VERSION}" \ - image.version="${IMAGE_VERSION}" - -ENV RELAY_MYDOMAIN=domain.com \ - RELAY_MYNETWORKS=127.0.0.0/8 \ - RELAY_HOST=[127.0.0.1]:25 \ - RELAY_USE_TLS=yes \ - RELAY_TLS_VERIFY=may \ - RELAY_DOMAINS=\$mydomain \ - RELAY_STRICT_SENDER_MYDOMAIN=true \ - RELAY_MODE=STRICT - #RELAY_MYHOSTNAME=relay.domain.com - #RELAY_POSTMASTER=postmaster@domain.com - #RELAY_LOGIN=loginname - #RELAY_PASSWORD=xxxxxxxx - #RELAY_TLS_CA=/etc/ssl/ca.crt - #RELAY_EXTRAS_SETTINGS +ENV RELAY_MYDOMAIN=domain.com +ENV RELAY_MYNETWORKS=127.0.0.0/8 +ENV RELAY_HOST=[127.0.0.1]:25 +ENV RELAY_USE_TLS=yes +ENV RELAY_TLS_VERIFY=may +ENV RELAY_DOMAINS=\$mydomain +ENV RELAY_STRICT_SENDER_MYDOMAIN=true +ENV RELAY_MODE=STRICT +#ENV RELAY_MYHOSTNAME=relay.domain.com +#ENV RELAY_POSTMASTER=postmaster@domain.com +#ENV RELAY_LOGIN=loginname +#ENV RELAY_PASSWORD=xxxxxxxx +#ENV RELAY_TLS_CA=/etc/ssl/ca.crt +#ENV RELAY_EXTRAS_SETTINGS # Install dependencies RUN apk --no-cache add \ diff --git a/hooks/build b/hooks/build old mode 100644 new mode 100755 index 065c755..f93f15c --- a/hooks/build +++ b/hooks/build @@ -1,10 +1,8 @@ #!/usr/bin/env bash ## Global settings -# docker hub username -DOCKER_USERNAME="${DOCKERHUB_REGISTRY_USERNAME:-turgon37}" # image name -DOCKER_IMAGE="${DOCKER_USERNAME}/${DOCKER_IMAGE:-smtp-relay}" +DOCKER_IMAGE="${DOCKER_REPO:-smtp-relay}" # "production" branch PRODUCTION_BRANCH=${PRODUCTION_BRANCH:-master} @@ -12,37 +10,69 @@ PRODUCTION_BRANCH=${PRODUCTION_BRANCH:-master} alpine_version=`cat Dockerfile | grep --perl-regexp --only-matching '(?<=FROM alpine:)[0-9.]+'` arch=`uname --machine` -## Settings initialization +## Initialization set -e -set -x # If empty version, fetch the latest from repository if [ -z "$POSTFIX_VERSION" ]; then - POSTFIX_VERSION=`curl -s "https://pkgs.alpinelinux.org/packages?name=postfix&branch=v${alpine_version}&repo=main&arch=${arch}" | grep --perl-regexp --only-matching '(?<=)[a-z0-9.-]+' | uniq` + POSTFIX_VERSION=`curl -s "https://pkgs.alpinelinux.org/packages?name=postfix&branch=v${alpine_version}&repo=main&arch=${arch}" \ + | grep --perl-regexp --only-matching '(?<=)[a-z0-9.-]+' | uniq` + test -n "$POSTFIX_VERSION" fi echo "-> selected Postfix version ${POSTFIX_VERSION}" # If empty version, fetch the latest from repository if [ -z "$RSYSLOG_VERSION" ]; then - RSYSLOG_VERSION=`curl -s "https://pkgs.alpinelinux.org/packages?name=rsyslog&branch=v${alpine_version}&repo=main&arch=${arch}" | grep --perl-regexp --only-matching '(?<=)[a-z0-9.-]+' | uniq` + RSYSLOG_VERSION=`curl -s "https://pkgs.alpinelinux.org/packages?name=rsyslog&branch=v${alpine_version}&repo=main&arch=${arch}" \ + | grep --perl-regexp --only-matching '(?<=)[a-z0-9.-]+' | uniq` + test -n "$RSYSLOG_VERSION" fi echo "-> selected Rsyslog version ${RSYSLOG_VERSION}" -# If empty version, fetch the latest from repository -if [ -n "$SOURCE_COMMIT" ]; then - VCS_REF=$SOURCE_COMMIT +# If empty commit, fetch the current from local git rpo +if [ -n "${SOURCE_COMMIT}" ]; then + VCS_REF="${SOURCE_COMMIT}" else - VCS_REF=`git rev-parse --short HEAD` + VCS_REF="`git rev-parse --short HEAD`" fi +test -n "$VCS_REF" echo "-> current vcs reference ${VCS_REF}" -# set the docker image version +# If empty branch, fetch the current from local git rpo if [ -n "${SOURCE_BRANCH}" ]; then - DOCKER_IMAGE_VERSION="${SOURCE_BRANCH}" + VCS_BRANCH="${SOURCE_BRANCH}" else - DOCKER_IMAGE_VERSION="`git rev-parse --abbrev-ref HEAD`" + VCS_BRANCH="`git rev-parse --abbrev-ref HEAD`" +fi +test -n "$VCS_BRANCH" +echo "-> current vcs branch ${VCS_BRANCH}" + +# set the docker tag prefix if needed +if [ "${VCS_BRANCH}" != "${PRODUCTION_BRANCH}" ]; then + docker_tag_prefix="${VCS_BRANCH}-" fi -echo "-> use image version ${DOCKER_IMAGE_VERSION}" +echo "-> use tag prefix ${docker_tag_prefix}" +# Get the current image static version image_version=`cat VERSION` +echo "-> use image version ${image_version}" + +## Build image echo "-> building ${DOCKER_IMAGE} with image version: ${image_version}" +docker build --build-arg "POSTFIX_VERSION=${POSTFIX_VERSION}" \ + --build-arg "RSYSLOG_VERSION=${RSYSLOG_VERSION}" \ + --label 'maintainer=Pierre GINDRAUD ' \ + --label "org.label-schema.build-date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" \ + --label 'org.label-schema.name=smtp-relay' \ + --label 'org.label-schema.description=SMTP server configured as a email relay' \ + --label 'org.label-schema.url=https://github.com/Turgon37/docker-smtp-relay' \ + --label "org.label-schema.vcs-ref=${VCS_REF}" \ + --label 'org.label-schema.vcs-url=https://github.com/Turgon37/docker-smtp-relay' \ + --label 'org.label-schema.vendor=Pierre GINDRAUD' \ + --label "org.label-schema.version=${image_version}" \ + --label 'org.label-schema.schema-version=1.0' \ + --label "application.postfix.version=${POSTFIX_VERSION}" \ + --label "application.rsyslog.version="${RSYSLOG_VERSION}" \ + --tag "${DOCKER_IMAGE}:${CACHE_TAG}" \ + --file Dockerfile \ + .