From 39bd503fff76c5ca4a3e334710479f4a8d5c02f9 Mon Sep 17 00:00:00 2001 From: Yann Autissier Date: Mon, 9 May 2022 02:41:06 +0000 Subject: [PATCH] fabio on arm --- docker/compose/Dockerfile | 20 ++++++++++++++++++++ docker/consul/Dockerfile | 3 ++- docker/fabio/Dockerfile | 30 ++++++++++++++---------------- docker/ipfs/Dockerfile | 3 ++- make/def.mk | 2 +- stack/node/node.yml | 11 ++++++++++- 6 files changed, 49 insertions(+), 20 deletions(-) create mode 100644 docker/compose/Dockerfile diff --git a/docker/compose/Dockerfile b/docker/compose/Dockerfile new file mode 100644 index 0000000..1b2fef5 --- /dev/null +++ b/docker/compose/Dockerfile @@ -0,0 +1,20 @@ +FROM alpine:3.15 as dist +LABEL maintainer aynic.os +ARG DOCKER_BUILD_DIR + +ARG COMPOSE_REMOTE=https://github.com/docker/compose +ARG COMPOSE_VERSION=v2.5.0 +ARG OPERATING_SYSTEM=Linux +ARG PROCESSOR_ARCHITECTURE=x86_64 + +RUN apk update \ + && apk add --no-cache ca-certificates \ + && OS="$(echo ${OPERATING_SYSTEM} |awk '{print tolower($0)}')"; \ + ARCH="$(echo ${PROCESSOR_ARCHITECTURE})"; \ + wget -qO /usr/bin/docker-compose ${COMPOSE_REMOTE}/releases/download/${COMPOSE_VERSION}/docker-compose-${OS}-${ARCH} \ + && chmod +x /usr/bin/docker-compose + +ENTRYPOINT ["/usr/bin/docker-compose"] + +FROM dist as master +ARG DOCKER_BUILD_DIR diff --git a/docker/consul/Dockerfile b/docker/consul/Dockerfile index 9cc1172..71310f6 100644 --- a/docker/consul/Dockerfile +++ b/docker/consul/Dockerfile @@ -1,4 +1,5 @@ -FROM consul:1.11.1 as dist +ARG CONSUL_VERSION=1.11.1 +FROM consul:${CONSUL_VERSION} as dist LABEL maintainer aynic.os ARG DOCKER_BUILD_DIR ARG DOCKER_GID=999 diff --git a/docker/fabio/Dockerfile b/docker/fabio/Dockerfile index d5485ff..72e7000 100644 --- a/docker/fabio/Dockerfile +++ b/docker/fabio/Dockerfile @@ -1,24 +1,22 @@ -FROM golang:1.15-alpine AS build +FROM alpine:3.15 as dist LABEL maintainer aynic.os ARG DOCKER_BUILD_DIR -ARG GIT_AUTHOR_NAME -ARG GIT_AUTHOR_EMAIL -ENV GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME} -ENV GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL} -ENV GIT_COMMITTER_NAME=${GIT_AUTHOR_NAME} -ENV GIT_COMMITTER_EMAIL=${GIT_AUTHOR_EMAIL} +ARG FABIO_REMOTE=https://github.com/fabiolb/fabio +ARG FABIO_VERSION=1.6.0 +ARG OPERATING_SYSTEM=Linux +ARG PROCESSOR_ARCHITECTURE=x86_64 -WORKDIR /go/src/github.com/fabiolb/fabio -COPY . . -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go test -mod=vendor -trimpath -ldflags "-s -w" ./... -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod=vendor -trimpath -ldflags "-s -w" +RUN apk update \ + && apk add --no-cache ca-certificates \ + && OS="$(echo ${OPERATING_SYSTEM} |awk '{print tolower($0)}')"; \ + ARCH="$(echo ${PROCESSOR_ARCHITECTURE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"; \ + wget -qO /usr/bin/fabio ${FABIO_REMOTE}/releases/download/v${FABIO_VERSION}/fabio-${FABIO_VERSION}-${OS}_${ARCH} \ + && chmod +x /usr/bin/fabio -FROM alpine:3.12 as master -RUN apk update && apk add --no-cache ca-certificates -COPY --from=build /src/fabio /usr/bin - -ADD fabio.properties /etc/fabio/fabio.properties EXPOSE 9998 9999 ENTRYPOINT ["/usr/bin/fabio"] CMD ["-cfg", "/etc/fabio/fabio.properties"] + +FROM dist as master +ARG DOCKER_BUILD_DIR diff --git a/docker/ipfs/Dockerfile b/docker/ipfs/Dockerfile index 35c0ac1..42843c3 100644 --- a/docker/ipfs/Dockerfile +++ b/docker/ipfs/Dockerfile @@ -1,4 +1,5 @@ -FROM ipfs/go-ipfs:v0.13.0-rc1 as dist +ARG IPFS_VERSION=v0.13.0-rc1 +FROM ipfs/go-ipfs:${IPFS_VERSION} as dist LABEL maintainer aynic.os ARG DOCKER_BUILD_DIR diff --git a/make/def.mk b/make/def.mk index 0932ba8..ebfac6d 100644 --- a/make/def.mk +++ b/make/def.mk @@ -53,7 +53,7 @@ ENV_ARGS ?= $(env_args) ENV_FILE ?= $(wildcard $(CONFIG)/$(ENV)/$(APP)/.env .env) ENV_LIST ?= $(shell ls .git/refs/heads/ 2>/dev/null) ENV_RESET ?= false -ENV_VARS ?= APP BRANCH DOMAIN ENV HOSTNAME GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME MONOREPO MONOREPO_DIR TAG UID USER VERSION +ENV_VARS ?= APP BRANCH DOMAIN ENV HOSTNAME GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME MONOREPO MONOREPO_DIR OPERATING_SYSTEM PROCESSOR_ARCHITECTURE TAG UID USER VERSION GID ?= $(shell id -g 2>/dev/null) GIT_AUTHOR_EMAIL ?= $(or $(shell git config user.email 2>/dev/null),$(USER)@my.os) GIT_AUTHOR_NAME ?= $(or $(shell git config user.name 2>/dev/null),$(USER)) diff --git a/stack/node/node.yml b/stack/node/node.yml index 83aa626..0f25bf2 100644 --- a/stack/node/node.yml +++ b/stack/node/node.yml @@ -4,6 +4,7 @@ services: consul: build: args: + - CONSUL_VERSION=1.11.1 - DOCKER_BUILD_DIR=docker/consul context: ../.. dockerfile: docker/consul/Dockerfile @@ -41,7 +42,15 @@ services: - ssl-certs:/certs - /var/run/docker.sock:/var/run/docker.sock fabio: - image: fabiolb/fabio:latest + build: + args: + - DOCKER_BUILD_DIR=docker/fabio + - FABIO_VERSION=1.6.0 + - OPERATING_SYSTEM=${OPERATING_SYSTEM} + - PROCESSOR_ARCHITECTURE=${PROCESSOR_ARCHITECTURE} + context: ../.. + dockerfile: docker/fabio/Dockerfile + image: ${DOCKER_REPOSITORY_NODE}/fabio:${DOCKER_IMAGE_TAG} command: -registry.backend "consul" -registry.consul.addr "consul:8500" -registry.consul.token "$FABIO_CONSUL_HTTP_TOKEN" -proxy.addr ":80,:443;cs=local" -proxy.cs "cs=local;type=file;cert=/certs/${DOMAIN}.crt.pem;key=/certs/${DOMAIN}.key.pem" depends_on: - consul