From 1920b8b7017c536a0ee37337ac7bc5875052f114 Mon Sep 17 00:00:00 2001 From: leandrofars Date: Tue, 12 Mar 2024 11:41:51 -0300 Subject: [PATCH] build: new build workflow with dokcer and makefile --- backend/services/mtp/mqtt/build/Dockerfile | 9 ++++ backend/services/mtp/mqtt/build/Makefile | 61 ++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 backend/services/mtp/mqtt/build/Dockerfile create mode 100644 backend/services/mtp/mqtt/build/Makefile diff --git a/backend/services/mtp/mqtt/build/Dockerfile b/backend/services/mtp/mqtt/build/Dockerfile new file mode 100644 index 0000000..187e660 --- /dev/null +++ b/backend/services/mtp/mqtt/build/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:1.22@sha256:82e07063a1ac3ee59e6f38b1222e32ce88469e4431ff6496cc40fb9a0fc18229 as builder +WORKDIR /app +COPY ../ . +RUN CGO_ENABLED=0 GOOS=linux go build -o mqtt cmd/mqtt/main.go + +FROM alpine:3.14@sha256:0f2d5c38dd7a4f4f733e688e3a6733cb5ab1ac6e3cb4603a5dd564e5bfb80eed +COPY --from=builder /app/mqtt / +EXPOSE 1883 8883 +ENTRYPOINT ["/mqtt"] \ No newline at end of file diff --git a/backend/services/mtp/mqtt/build/Makefile b/backend/services/mtp/mqtt/build/Makefile new file mode 100644 index 0000000..37aa4b2 --- /dev/null +++ b/backend/services/mtp/mqtt/build/Makefile @@ -0,0 +1,61 @@ +.PHONY: help build push start stop release remove delete run logs bash + +DOCKER_USER ?= oktopus +DOCKER_APP ?= mqtt +DOCKER_TAG ?= $(shell git log --format="%h" -n 1) +CONTAINER_SHELL ?= /bin/sh + +.DEFAULT_GOAL := help + +help: + @echo "Makefile arguments:" + @echo "" + @echo "DOCKER_USER - docker user to build image" + @echo "DOCKER_APP - docker image name" + @echo "DOCKER_TAG - docker image tag" + @echo "CONTAINER_SHELL - container shell e.g:'/bin/bash'" + @echo "" + @echo "Makefile commands:" + @echo "" + @echo "build - docker image build" + @echo "push - push docker iamge to registry" + @echo "run - create and start docker container with the image" + @echo "start - start existent docker container with the image" + @echo "stop - stop docker container running the image" + @echo "remove - remove docker container running the image" + @echo "delete - delete docker image" + @echo "logs - show logs of docker container" + @echo "bash - access container shell" + @echo "release - tag image as latest and push to registry" + +build: + @docker build -t ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} -f Dockerfile ../ + +run: + @docker run -d --name ${DOCKER_USER}-${DOCKER_APP} -p 1883:1883 -p 8883:8883 ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} + +stop: + @docker stop ${DOCKER_USER}-${DOCKER_APP} + +remove: stop + @docker rm ${DOCKER_USER}-${DOCKER_APP} + +delete: + @docker rmi ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} + +start: + @docker start ${DOCKER_USER}-${DOCKER_APP} + +push: + @docker push ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} + +logs: + @docker logs -f ${DOCKER_USER}-${DOCKER_APP} + +bash: + @docker exec -it ${DOCKER_USER}-${DOCKER_APP} ${CONTAINER_SHELL} + +release: + @docker pull ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} + @docker tag ${DOCKER_USER}/${DOCKER_APP}:${DOCKER_TAG} ${DOCKER_USER}/${DOCKER_APP}:latest + @docker push ${DOCKER_USER}/${DOCKER_APP}:latest \ No newline at end of file