added containerfile

This commit is contained in:
Felipe M 2022-08-09 16:55:27 +02:00
parent 141721f08e
commit 5dd2bfb3f9
Signed by: fmartingr
GPG Key ID: 716BC147715E716F
3 changed files with 64 additions and 1 deletions

25
Containerfile Normal file
View File

@ -0,0 +1,25 @@
# Build stage
ARG GOLANG_VERSION
ARG ALPINE_VERSION
FROM docker.io/library/golang:${GOLANG_VERSION}-alpine${ALPINE_VERSION} AS builder
WORKDIR /src
COPY . .
RUN apk add --no-cache ca-certificates tzdata make && \
make build
# Server image
FROM scratch
ENV PORT 8080
LABEL org.opencontainers.image.source="https://github.com/fmartingr/bazaar"
LABEL maintainer="Felipe Martin <github@fmartingr.com>"
COPY --from=builder /src/build/bazaar /usr/bin/
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
# RUN addgroup -g 1000 bazaar \
# && adduser -D -h /bazaar -g '' -G bazaar -u 1000 bazaar
# USER bazaar
EXPOSE ${PORT}
ENTRYPOINT ["/usr/bin/bazaar"]

View File

@ -1,23 +1,47 @@
PROJECT := bazaar
PROJECT_NAME := bazaar
GOLANG_VERSION=1.19
VERSION_COMMIT := $git rev-parse --short HEAD)
SOURCE_FILES ?=./internal/... ./cmd/... ./pkg/...
TEST_OPTIONS ?= -v -failfast -race -bench=. -benchtime=100000x -cover -coverprofile=coverage.out
TEST_TIMEOUT ?=1m
CLEAN_OPTIONS ?=-modcache -testcache
LD_FLAGS := -X main.version=$(VERSION) -s -w
CGO_ENABLED := 0
BUILDS_PATH := ./build
FROM_MAKEFILE := y
CONTAINER_RUNTIME := podman
CONTAINERFILE_NAME := Containerfile
CONTAINER_GOLANG_VERSION := ${GOLANG_VERSION}
CONTAINER_ALPINE_VERSION := 3.16
CONTAINER_IMAGE_NAME := fmartingr/${PROJECT_NAME}
CONTAINER_IMAGE_TAG := dev
# Common exports
export FROM_MAKEFILE
export VERSION_COMMIT
export LD_FLAGS
export CGO_ENABLED
export SOURCE_FILES
export TEST_OPTIONS
export TEST_TIMEOUT
export BUILDS_PATH
export CONTAINER_RUNTIME
export CONTAINERFILE_NAME
export CONTAINER_GOLANG_VERSION
export CONTAINER_ALPINE_VERSION
export CONTAINER_IMAGE_NAME
export CONTAINER_IMAGE_TAG
.PHONY: all
all: help
@ -46,6 +70,11 @@ build: clean ### builds the project for the setup os/arch combinations
@go build -a -v -ldflags "${LD_FLAGS}" -o ${BUILDS_PATH}/bazaar ./cmd/bazaar/*.go
@chmod +x ${BUILDS_PATH}/bazaar
.PHONY: build-container-image
build-container:
$(info: Make: Container image)
@bash scripts/build-container-image.sh
.PHONY: quick-run
quick-run: ### Executes the project using golang
@go run ./cmd/bazaar/*.go

View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -e
if [ -z "$FROM_MAKEFILE" ]; then
echo "Do not call this file directly - use the make command"
exit 1
fi
${CONTAINER_RUNTIME} build --build-arg "GOLANG_VERSION=${CONTAINER_GOLANG_VERSION}" --build-arg="ALPINE_VERSION=${CONTAINER_ALPINE_VERSION}" -t ${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_TAG} -f ${CONTAINERFILE_NAME} .