Skip to content

Commit e42c59d

Browse files
authored
Build ubi image (#13)
Signed-off-by: Tamal Saha <tamal@appscode.com>
1 parent 87e2491 commit e42c59d

File tree

2 files changed

+54
-8
lines changed

2 files changed

+54
-8
lines changed

Dockerfile.ubi

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Copyright AppsCode Inc. and Contributors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
FROM {ARG_FROM}
16+
17+
LABEL org.opencontainers.image.source="https://github.com/kubeops/pgoutbox" \
18+
name="pgoutbox" \
19+
maintainer=AppsCode \
20+
vendor=AppsCode \
21+
version={ARG_TAG} \
22+
release={ARG_TAG} \
23+
summary="Implements Outbox pattern for PostgreSQL" \
24+
description="Implements Outbox pattern for PostgreSQL"
25+
26+
RUN mkdir -p /licenses
27+
COPY LICENSE /licenses/
28+
29+
RUN set -x \
30+
&& microdnf update -y \
31+
&& microdnf install -y ca-certificates tzdata \
32+
&& microdnf clean all
33+
34+
ENV TZ=Etc/UTC
35+
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
36+
37+
ADD bin/{ARG_BIN}-{ARG_OS}-{ARG_ARCH} /{ARG_BIN}
38+
39+
USER 65534
40+
41+
ENTRYPOINT ["/{ARG_BIN}"]

Makefile

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,20 @@ ARCH := $(if $(GOARCH),$(GOARCH),$(shell go env GOARCH))
6565

6666
BASEIMAGE_PROD ?= alpine
6767
BASEIMAGE_DBG ?= debian:12
68+
BASEIMAGE_UBI ?= registry.access.redhat.com/ubi10/ubi-minimal
6869

6970
IMAGE := $(REGISTRY)/$(BIN)
7071
VERSION_PROD := $(VERSION)
7172
VERSION_DBG := $(VERSION)-dbg
73+
VERSION_UBI := $(VERSION)-ubi
7274
TAG := $(VERSION)_$(OS)_$(ARCH)
7375
TAG_PROD := $(TAG)
7476
TAG_DBG := $(VERSION)-dbg_$(OS)_$(ARCH)
77+
TAG_UBI := $(VERSION)-ubi_$(OS)_$(ARCH)
7578

76-
GO_VERSION ?= 1.24
79+
GO_VERSION ?= 1.25
7780
BUILD_IMAGE ?= ghcr.io/appscode/golang-dev:$(GO_VERSION)
78-
CHART_TEST_IMAGE ?= quay.io/helmpack/chart-testing:v3.11.0
81+
CHART_TEST_IMAGE ?= quay.io/helmpack/chart-testing:v3.13.0
7982

8083
OUTBIN = bin/$(BIN)-$(OS)-$(ARCH)
8184
ifeq ($(OS),windows)
@@ -93,6 +96,7 @@ BUILD_DIRS := bin/$(OS)_$(ARCH) \
9396

9497
DOCKERFILE_PROD = Dockerfile.in
9598
DOCKERFILE_DBG = Dockerfile.dbg
99+
DOCKERFILE_UBI = Dockerfile.ubi
96100

97101
DOCKER_REPO_ROOT := /go/src/$(GO_PKG)/$(REPO)
98102

@@ -220,15 +224,16 @@ endif
220224
# Used to track state in hidden files.
221225
DOTFILE_IMAGE = $(subst /,_,$(IMAGE))-$(TAG)
222226

223-
container: bin/.container-$(DOTFILE_IMAGE)-PROD bin/.container-$(DOTFILE_IMAGE)-DBG
227+
container: bin/.container-$(DOTFILE_IMAGE)-PROD bin/.container-$(DOTFILE_IMAGE)-DBG bin/.container-$(DOTFILE_IMAGE)-UBI
224228
ifeq (,$(SRC_REG))
225229
bin/.container-$(DOTFILE_IMAGE)-%: bin/$(BIN)-$(OS)-$(ARCH) $(DOCKERFILE_%)
226230
@echo "container: $(IMAGE):$(TAG_$*)"
227-
@sed \
231+
@sed \
228232
-e 's|{ARG_BIN}|$(BIN)|g' \
229233
-e 's|{ARG_ARCH}|$(ARCH)|g' \
230234
-e 's|{ARG_OS}|$(OS)|g' \
231235
-e 's|{ARG_FROM}|$(BASEIMAGE_$*)|g' \
236+
-e 's|{ARG_TAG}|$(TAG)|g' \
232237
$(DOCKERFILE_$*) > bin/.dockerfile-$*-$(OS)_$(ARCH)
233238
@docker buildx build --platform $(OS)/$(ARCH) --load --pull -t $(IMAGE):$(TAG_$*) -f bin/.dockerfile-$*-$(OS)_$(ARCH) .
234239
@docker images -q $(IMAGE):$(TAG_$*) > $@
@@ -240,17 +245,17 @@ bin/.container-$(DOTFILE_IMAGE)-%:
240245
@echo
241246
endif
242247

243-
push: bin/.push-$(DOTFILE_IMAGE)-PROD bin/.push-$(DOTFILE_IMAGE)-DBG
248+
push: bin/.push-$(DOTFILE_IMAGE)-PROD bin/.push-$(DOTFILE_IMAGE)-DBG bin/.push-$(DOTFILE_IMAGE)-UBI
244249
bin/.push-$(DOTFILE_IMAGE)-%: bin/.container-$(DOTFILE_IMAGE)-%
245250
@docker push $(IMAGE):$(TAG_$*)
246251
@echo "pushed: $(IMAGE):$(TAG_$*)"
247252
@echo
248253

249254
.PHONY: docker-manifest
250-
docker-manifest: docker-manifest-PROD docker-manifest-DBG
255+
docker-manifest: docker-manifest-PROD docker-manifest-DBG docker-manifest-UBI
251256
docker-manifest-%:
252-
docker manifest create -a $(IMAGE):$(VERSION_$*) $(foreach PLATFORM,$(DOCKER_PLATFORMS),$(IMAGE):$(VERSION_$*)_$(subst /,_,$(PLATFORM)))
253-
docker manifest push $(IMAGE):$(VERSION_$*)
257+
@docker manifest create -a $(IMAGE):$(VERSION_$*) $(foreach PLATFORM,$(DOCKER_PLATFORMS),$(IMAGE):$(VERSION_$*)_$(subst /,_,$(PLATFORM)))
258+
@docker manifest push $(IMAGE):$(VERSION_$*)
254259

255260
.PHONY: test
256261
test: unit-tests

0 commit comments

Comments
 (0)