From f2aca73855e6de4b1065cada4c7289f8d7f57812 Mon Sep 17 00:00:00 2001 From: aespin Date: Wed, 2 Oct 2024 10:58:37 +0200 Subject: [PATCH] wip --- Makefile | 34 ++++++++++++++++++++++++++++++ celsa2048.crt | 28 +++++++++++++++++++++++++ docker/Dockerfile | 38 ++++++++++++++++++++++++++++++++++ handset/publisher/publisher.go | 7 +++---- 4 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 Makefile create mode 100644 celsa2048.crt create mode 100644 docker/Dockerfile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..79405e1 --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +# Variables +IMAGE_NAME = registry.espin.casa/cml04-falcon-system +CONTAINER_NAME = cml04-falcon-system + +# Check if Docker or Podman is available +DOCKER := $(shell command -v docker 2> /dev/null) +PODMAN := $(shell command -v podman 2> /dev/null) + +# Determine which command to use based on availability +ifdef DOCKER + DOCKER_CMD := docker +else ifdef PODMAN + DOCKER_CMD := podman +else +$(error "Neither Docker nor Podman is installed on this system.") +endif + +# Build the Docker image +build: + $(DOCKER_CMD) build -t $(IMAGE_NAME) -f docker/Dockerfile . + +# Run the container +run: + @templ generate + @$(DOCKER_CMD) run $(IMAGE_NAME) + +# Stop and remove the container +stop: + $(DOCKER_CMD) stop $(CONTAINER_NAME) + $(DOCKER_CMD) rm $(CONTAINER_NAME) + +# Remove the Docker image +clean: + $(DOCKER_CMD) rmi $(IMAGE_NAME) \ No newline at end of file diff --git a/celsa2048.crt b/celsa2048.crt new file mode 100644 index 0000000..523346d --- /dev/null +++ b/celsa2048.crt @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIJANu+mC2Jt3uTMA0GCSqGSIb3DQEBCwUAMIGhMQswCQYD +VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8GA1UEBxMIU2FuIEpvc2Ux +FTATBgNVBAoTDFpzY2FsZXIgSW5jLjEVMBMGA1UECxMMWnNjYWxlciBJbmMuMRgw +FgYDVQQDEw9ac2NhbGVyIFJvb3QgQ0ExIjAgBgkqhkiG9w0BCQEWE3N1cHBvcnRA +enNjYWxlci5jb20wHhcNMTQxMjE5MDAyNzU1WhcNNDIwNTA2MDAyNzU1WjCBoTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExETAPBgNVBAcTCFNhbiBK +b3NlMRUwEwYDVQQKEwxac2NhbGVyIEluYy4xFTATBgNVBAsTDFpzY2FsZXIgSW5j +LjEYMBYGA1UEAxMPWnNjYWxlciBSb290IENBMSIwIAYJKoZIhvcNAQkBFhNzdXBw +b3J0QHpzY2FsZXIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +qT7STSxZRTgEFFf6doHajSc1vk5jmzmM6BWuOo044EsaTc9eVEV/HjH/1DWzZtcr +fTj+ni205apMTlKBW3UYR+lyLHQ9FoZiDXYXK8poKSV5+Tm0Vls/5Kb8mkhVVqv7 +LgYEmvEY7HPY+i1nEGZCa46ZXCOohJ0mBEtB9JVlpDIO+nN0hUMAYYdZ1KZWCMNf +5J/aTZiShsorN2A38iSOhdd+mcRM4iNL3gsLu99XhKnRqKoHeH83lVdfu1XBeoQz +z5V6gA3kbRvhDwoIlTBeMa5l4yRdJAfdpkbFzqiwSgNdhbxTHnYYorDzKfr2rEFM +dsMU0DHdeAZf711+1CunuQIDAQABo4IBCjCCAQYwHQYDVR0OBBYEFLm33UrNww4M +hp1d3+wcBGnFTpjfMIHWBgNVHSMEgc4wgcuAFLm33UrNww4Mhp1d3+wcBGnFTpjf +oYGnpIGkMIGhMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTERMA8G +A1UEBxMIU2FuIEpvc2UxFTATBgNVBAoTDFpzY2FsZXIgSW5jLjEVMBMGA1UECxMM +WnNjYWxlciBJbmMuMRgwFgYDVQQDEw9ac2NhbGVyIFJvb3QgQ0ExIjAgBgkqhkiG +9w0BCQEWE3N1cHBvcnRAenNjYWxlci5jb22CCQDbvpgtibd7kzAMBgNVHRMEBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw0NdJh8w3NsJu4KHuVZUrmZgIohnTm0j+ +RTmYQ9IKA/pvxAcA6K1i/LO+Bt+tCX+C0yxqB8qzuo+4vAzoY5JEBhyhBhf1uK+P +/WVWFZN/+hTgpSbZgzUEnWQG2gOVd24msex+0Sr7hyr9vn6OueH+jj+vCMiAm5+u +kd7lLvJsBu3AO3jGWVLyPkS3i6Gf+rwAp1OsRrv3WnbkYcFf9xjuaf4z0hRCrLN2 +xFNjavxrHmsH8jPHVvgc1VD0Opja0l/BRVauTrUaoW6tE+wFG5rEcPGS80jjHK4S +pB5iDj2mUZH1T8lzYtuZy0ZPirxmtsk3135+CKNa2OCAhhFjE0xd +-----END CERTIFICATE----- \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..91eb788 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,38 @@ +# Etapa de compilación +FROM golang:1.23.1-bookworm AS builder + +ENV TZ=Europe/Madrid + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +ADD celsa2048.crt /usr/local/share/ca-certificates/celsa2048.crt +RUN chmod 644 /usr/local/share/ca-certificates/celsa2048.crt +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates + +RUN update-ca-certificates +WORKDIR /app + +COPY . . + +RUN go get -d -v ./... + +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod=mod -ldflags "-s -w" -o myapp main.go + +# Etapa de producción + +FROM debian:stable +ENV TZ=Europe/Madrid + +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +ADD celsa2048.crt /usr/local/share/ca-certificates/celsa2048.crt +RUN chmod 644 /usr/local/share/ca-certificates/celsa2048.crt +RUN apt-get update \ + && apt-get install -y --no-install-recommends ca-certificates +ADD assets /root/ +ADD templates /root/ +RUN update-ca-certificates +WORKDIR /root/ + +COPY --from=builder /app/myapp . + +CMD ["./myapp"] \ No newline at end of file diff --git a/handset/publisher/publisher.go b/handset/publisher/publisher.go index 17f3535..03c7588 100644 --- a/handset/publisher/publisher.go +++ b/handset/publisher/publisher.go @@ -20,15 +20,14 @@ type publisher struct { func (e *publisher) Barcode(ctx context.Context, barcode string) error { // create event message evt := cml04eventer.NewEvent("falcon-handset", "barcode.new", nil, []byte(barcode)) - + // create buffer message data buf := bytes.Buffer{} - + // encode message if err := json.NewEncoder(&buf).Encode(evt); err != nil { return err } - + // publish event message return e.nc.Publish("barcode.new", buf.Bytes()) - } func New(nc *nats.Conn) Publisher {