Docker cleanup

* Reduce all Dockerfiles to a single multi-staged one
* Updates GitHub Actions and also push the current git shortened SHA
This commit is contained in:
lspgn
2021-10-15 20:51:34 -07:00
committed by Job Snijders
parent 305c0c612f
commit 6d1c068d5a
9 changed files with 84 additions and 156 deletions
+9 -6
View File
@@ -26,9 +26,10 @@ jobs:
uses: docker/build-push-action@v2
with:
context: ./
file: ./Dockerfile.stayrtr.prod
file: ./Dockerfile
push: true
tags: rpki/stayrtr:latest
tags: rpki/stayrtr:latest,rpki/stayrtr:${GITHUB_SHA::8}
target: stayrtr
- name: Image digest (stayrtr)
run: echo ${{ steps.docker_build_stayrtr.outputs.digest }}
@@ -38,9 +39,10 @@ jobs:
uses: docker/build-push-action@v2
with:
context: ./
file: ./Dockerfile.rtrmon.prod
file: ./Dockerfile
push: true
tags: rpki/rtrmon:latest
tags: rpki/rtrmon:latest,rpki/rtrmon:${GITHUB_SHA::8}
target: rtrmon
- name: Image digest (rtrmon)
run: echo ${{ steps.docker_build_rtrmon.outputs.digest }}
@@ -50,9 +52,10 @@ jobs:
uses: docker/build-push-action@v2
with:
context: ./
file: ./Dockerfile.rtrdump.prod
file: ./Dockerfile
push: true
tags: rpki/rtrdump:latest
tags: rpki/rtrdump:latest,rpki/rtrdump:${GITHUB_SHA::8}
target: rtrdump
- name: Image digest (rtrdump)
run: echo ${{ steps.docker_build_rtrdump.outputs.digest }}
+57
View File
@@ -0,0 +1,57 @@
###############
# Build stage #
###############
ARG src_dir="/stayrtr"
FROM golang:alpine as builder
ARG src_dir
RUN apk --update --no-cache add git make && \
mkdir -p ${src_dir}
WORKDIR ${src_dir}
COPY . .
RUN SUFFIX= make build-all
################
# Keygen stage #
################
FROM alpine:latest as keygen
RUN apk --update --no-cache add openssl
RUN openssl ecparam -genkey -name prime256v1 -noout -outform pem > private.pem
#################
# StayRTR stage #
#################
FROM alpine:latest AS stayrtr
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder /stayrtr/dist/stayrtr /
COPY --from=keygen /private.pem /private.pem
ENTRYPOINT ["./stayrtr"]
#################
# RTRdump stage #
#################
FROM alpine:latest AS rtrdump
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder /stayrtr/dist/rtrdump /
ENTRYPOINT ["./rtrdump"]
#################
# RTRmon stage #
#################
FROM alpine:latest AS rtrmon
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder /stayrtr/dist/rtrmon /
ENTRYPOINT ["./rtrmon"]
-23
View File
@@ -1,23 +0,0 @@
ARG src_dir="/rtrdump"
FROM golang:alpine as builder
ARG src_dir
ARG LDFLAGS=""
RUN apk --update --no-cache add git && \
mkdir -p ${src_dir}
WORKDIR ${src_dir}
COPY . .
RUN go build -ldflags "${LDFLAGS}" cmd/rtrdump/rtrdump.go
FROM alpine:latest
ARG src_dir
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder ${src_dir}/rtrdump /
ENTRYPOINT ["./rtrdump"]
-17
View File
@@ -1,17 +0,0 @@
ARG src_uri=github.com/bgp/stayrtr/cmd/rtrdump
FROM golang:alpine as builder
ARG src_uri
RUN apk --update --no-cache add git && \
go get -u $src_uri
FROM alpine:latest
ARG src_uri
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder /go/bin/rtrdump /
ENTRYPOINT ["./rtrdump"]
-23
View File
@@ -1,23 +0,0 @@
ARG src_dir="/rtrmon"
FROM golang:alpine as builder
ARG src_dir
ARG LDFLAGS=""
RUN apk --update --no-cache add git && \
mkdir -p ${src_dir}
WORKDIR ${src_dir}
COPY . .
RUN go build -ldflags "${LDFLAGS}" cmd/rtrmon/rtrmon.go
FROM alpine:latest
ARG src_dir
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder ${src_dir}/rtrmon /
ENTRYPOINT ["./rtrmon"]
-17
View File
@@ -1,17 +0,0 @@
ARG src_uri=github.com/bgp/stayrtr/cmd/rtrmon
FROM golang:alpine as builder
ARG src_uri
RUN apk --update --no-cache add git && \
go get -u $src_uri
FROM alpine:latest
ARG src_uri
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder /go/bin/rtrmon /
ENTRYPOINT ["./rtrmon"]
-28
View File
@@ -1,28 +0,0 @@
ARG src_dir="/stayrtr"
FROM golang:alpine as builder
ARG src_dir
ARG LDFLAGS=""
RUN apk --update --no-cache add git && \
mkdir -p ${src_dir}
WORKDIR ${src_dir}
COPY . .
RUN go build -ldflags "${LDFLAGS}" cmd/stayrtr/stayrtr.go
FROM alpine:latest as keygen
RUN apk --update --no-cache add openssl
RUN openssl ecparam -genkey -name prime256v1 -noout -outform pem > private.pem
FROM alpine:latest
ARG src_dir
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=keygen /private.pem /private.pem
ENTRYPOINT ["./stayrtr"]
-23
View File
@@ -1,23 +0,0 @@
ARG src_uri=github.com/bgp/stayrtr/cmd/stayrtr
FROM golang:alpine as builder
ARG src_uri
RUN apk --update --no-cache add git && \
go get -u $src_uri
FROM alpine:latest as keygen
RUN apk --update --no-cache add openssl
RUN openssl ecparam -genkey -name prime256v1 -noout -outform pem > private.pem
FROM alpine:latest
ARG src_uri
RUN apk --update --no-cache add ca-certificates && \
adduser -S -D -H -h / rtr
USER rtr
COPY --from=builder /go/bin/stayrtr /
COPY --from=keygen /private.pem /private.pem
ENTRYPOINT ["./stayrtr"]
+18 -19
View File
@@ -4,7 +4,7 @@ GOOS ?= linux
ARCH ?= $(shell uname -m)
BUILDINFOSDET ?=
DOCKER_REPO := bgp/
DOCKER_REPO := rpki/
STAYRTR_NAME := stayrtr
STAYRTR_VERSION := $(shell git describe --tags $(git rev-list --tags --max-count=1))
VERSION_PKG := $(shell echo $(STAYRTR_VERSION) | sed 's/^v//g')
@@ -13,14 +13,16 @@ LICENSE := BSD-3
URL := https://github.com/bgp/stayrtr
DESCRIPTION := StayRTR: a RPKI-to-Router server
BUILDINFOS := ($(shell date +%FT%T%z)$(BUILDINFOSDET))
LDFLAGS := '-X main.version=$(STAYRTR_VERSION) -X main.buildinfos=$(BUILDINFOS)'
LDFLAGS ?= '-X main.version=$(STAYRTR_VERSION) -X main.buildinfos=$(BUILDINFOS)'
RTRDUMP_NAME := rtrdump
RTRMON_NAME := rtrmon
OUTPUT_STAYRTR := $(DIST_DIR)stayrtr-$(STAYRTR_VERSION)-$(GOOS)-$(ARCH)$(EXTENSION)
OUTPUT_RTRDUMP := $(DIST_DIR)rtrdump-$(STAYRTR_VERSION)-$(GOOS)-$(ARCH)$(EXTENSION)
OUTPUT_RTRMON := $(DIST_DIR)rtrmon-$(STAYRTR_VERSION)-$(GOOS)-$(ARCH)$(EXTENSION)
SUFFIX ?= -$(STAYRTR_VERSION)-$(GOOS)-$(ARCH)$(EXTENSION)
OUTPUT_STAYRTR := $(DIST_DIR)stayrtr$(SUFFIX)
OUTPUT_RTRDUMP := $(DIST_DIR)rtrdump$(SUFFIX)
OUTPUT_RTRMON := $(DIST_DIR)rtrmon$(SUFFIX)
.PHONY: vet
vet:
@@ -39,29 +41,26 @@ prepare:
clean:
rm -rf $(DIST_DIR)
.PHONY: build-all
build-all: build-stayrtr build-rtrdump build-rtrmon
.PHONY: build-stayrtr
build-stayrtr: prepare
go build -ldflags $(LDFLAGS) -o $(OUTPUT_STAYRTR) cmd/stayrtr/stayrtr.go
go build -ldflags $(LDFLAGS) -o $(OUTPUT_STAYRTR) cmd/stayrtr/stayrtr.go
.PHONY: build-rtrdump
build-rtrdump:
go build -ldflags $(LDFLAGS) -o $(OUTPUT_RTRDUMP) cmd/rtrdump/rtrdump.go
go build -ldflags $(LDFLAGS) -o $(OUTPUT_RTRDUMP) cmd/rtrdump/rtrdump.go
.PHONY: build-rtrmon
build-rtrmon:
go build -ldflags $(LDFLAGS) -o $(OUTPUT_RTRMON) cmd/rtrmon/rtrmon.go
go build -ldflags $(LDFLAGS) -o $(OUTPUT_RTRMON) cmd/rtrmon/rtrmon.go
.PHONY: docker-stayrtr
docker-stayrtr:
docker build -t $(DOCKER_REPO)$(STAYRTR_NAME):$(STAYRTR_VERSION) --build-arg LDFLAGS=$(LDFLAGS) -f Dockerfile.stayrtr .
.PHONY: docker-rtrdump
docker-rtrdump:
docker build -t $(DOCKER_REPO)$(RTRDUMP_NAME):$(STAYRTR_VERSION) --build-arg LDFLAGS=$(LDFLAGS) -f Dockerfile.rtrdump .
.PHONY: docker-rtrmon
docker-rtrmon:
docker build -t $(DOCKER_REPO)$(RTRMON_NAME):$(STAYRTR_VERSION) --build-arg LDFLAGS=$(LDFLAGS) -f Dockerfile.rtrmon .
.PHONY: docker
docker:
docker build -t $(DOCKER_REPO)$(STAYRTR_NAME) --target stayrtr .
docker build -t $(DOCKER_REPO)$(RTRDUMP_NAME) --target rtrdump .
docker build -t $(DOCKER_REPO)$(RTRMON_NAME) --target rtrmon .
.PHONY: package-deb-stayrtr
package-deb-stayrtr: prepare