From 6692a6abd487e53dc39e221b6a9387fd05e1fc89 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Fri, 20 Sep 2024 15:51:08 +0200 Subject: chore(tooling): add a Dockerfile along with some makefile container targets --- Dockerfile | 21 +++++++++++++++++++++ GNUmakefile | 26 ++++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0cf3598 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +##### Build #################################################################### +FROM docker.io/library/golang:1.23-alpine + +WORKDIR /usr/src/app + +COPY go.mod go.sum ./ +RUN go mod download && go mod verify + +COPY . . +RUN CGO_ENABLED=0 go build ./... + +##### Run ###################################################################### +FROM alpine:3.20 + +ENV LANG en_US.utf8 + +RUN apk upgrade --no-cache + +COPY --from=0 /usr/src/app/ods /usr/local/bin/ + +ENTRYPOINT ["/usr/local/bin/ods"] diff --git a/GNUmakefile b/GNUmakefile index dd1979d..7b7c475 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -41,16 +41,38 @@ tidy: ## tidy up the code build: ## build the code CGO_ENABLED=0 go build -o $(OUTDIR)/ods ./ +.PHONY: clean +clean: ## clean the code + rm -f $(OUTDIR)/ods + .PHONY: run run: ## run the code go run ./ +##### Containers ############################################################### +.PHONY: container-build +container-build: ## build the container image + podman build \ + -t $(CONTAINER_REGISTRY)/ods:$(CONTAINER_TAG) \ + . + +.PHONY: container-push +container-push: ## push the container image to the container registry + podman push \ + $(CONTAINER_REGISTRY)/ods:$(CONTAINER_TAG) + +.PHONY: container-run +container-run: ## run the code inside podman + podman run --rm -ti \ + -p 8090:8090 \ + $(CONTAINER_REGISTRY)/ods:$(CONTAINER_TAG) + ##### Operations ############################################################### .PHONY: push push: tidy no-dirty check ## push changes to git remote git push git master .PHONY: deploy -deploy: check build ## deploy changes to the production server - rsync -a --delete $(OUTDIR)/ods root@ods.adyxax.org:/srv/ods/ +deploy: ## deploy changes to the production server + rsync $(OUTDIR)/ods root@ods.adyxax.org:/srv/ods/ ssh root@ods.adyxax.org "systemctl restart ods" -- cgit v1.2.3