chore(tooling): add a Dockerfile along with some makefile container targets

This commit is contained in:
Julien Dessaux 2024-09-20 15:51:08 +02:00
parent 7ef03c6f55
commit 7ac6c9c407
Signed by: adyxax
GPG key ID: F92E51B86E07177E
2 changed files with 45 additions and 2 deletions

21
Dockerfile Normal file
View file

@ -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"]

View file

@ -41,16 +41,38 @@ tidy: ## tidy up the code
build: ## build the code build: ## build the code
CGO_ENABLED=0 go build -o $(OUTDIR)/ods ./ CGO_ENABLED=0 go build -o $(OUTDIR)/ods ./
.PHONY: clean
clean: ## clean the code
rm -f $(OUTDIR)/ods
.PHONY: run .PHONY: run
run: ## run the code run: ## run the code
go run ./ 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 ############################################################### ##### Operations ###############################################################
.PHONY: push .PHONY: push
push: tidy no-dirty check ## push changes to git remote push: tidy no-dirty check ## push changes to git remote
git push git master git push git master
.PHONY: deploy .PHONY: deploy
deploy: check build ## deploy changes to the production server deploy: ## deploy changes to the production server
rsync -a --delete $(OUTDIR)/ods root@ods.adyxax.org:/srv/ods/ rsync $(OUTDIR)/ods root@ods.adyxax.org:/srv/ods/
ssh root@ods.adyxax.org "systemctl restart ods" ssh root@ods.adyxax.org "systemctl restart ods"