From faf7c4dc6d784be17c1acf84a9c2c1e0ee86d520 Mon Sep 17 00:00:00 2001 From: Aldino kemal Date: Fri, 29 Apr 2022 21:27:01 +0700 Subject: [PATCH] feat: dockerize app --- docker-compose.yml | 14 +++++++++++ docker/golang.Dockerfile | 23 +++++++++++++++++++ openapi.yaml => docs/openapi.yaml | 0 readme.md | 21 ++++++++++++++--- .air.toml => src/.air.toml | 0 {config => src/config}/settings.go | 0 .../controllers}/app_controller.go | 0 .../controllers}/send_controller.go | 0 .../controllers}/user_controller.go | 0 go.mod => src/go.mod | 0 go.sum => src/go.sum | 0 main.go => src/main.go | 0 {middleware => src/middleware}/recovery.go | 0 {services => src/services}/app_service.go | 0 .../services}/app_service_impl.go | 0 {services => src/services}/send_service.go | 0 .../services}/send_service_impl.go | 0 {services => src/services}/user_service.go | 0 .../services}/user_service_impl.go | 0 .../statics}/images/qrcode/.gitignore | 0 .../statics}/images/senditems/.gitignore | 0 {structs => src/structs}/auth_struct.go | 0 {structs => src/structs}/send_struct.go | 0 {utils => src/utils}/errors.go | 0 {utils => src/utils}/response.go | 0 {utils => src/utils}/whatsapp.go | 0 .../validations}/send_validation.go | 0 .../validations}/send_validation_test.go | 0 .../validations}/user_validation.go | 0 {views => src/views}/index.html | 0 30 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 docker-compose.yml create mode 100644 docker/golang.Dockerfile rename openapi.yaml => docs/openapi.yaml (100%) rename .air.toml => src/.air.toml (100%) rename {config => src/config}/settings.go (100%) rename {controllers => src/controllers}/app_controller.go (100%) rename {controllers => src/controllers}/send_controller.go (100%) rename {controllers => src/controllers}/user_controller.go (100%) rename go.mod => src/go.mod (100%) rename go.sum => src/go.sum (100%) rename main.go => src/main.go (100%) rename {middleware => src/middleware}/recovery.go (100%) rename {services => src/services}/app_service.go (100%) rename {services => src/services}/app_service_impl.go (100%) rename {services => src/services}/send_service.go (100%) rename {services => src/services}/send_service_impl.go (100%) rename {services => src/services}/user_service.go (100%) rename {services => src/services}/user_service_impl.go (100%) rename {statics => src/statics}/images/qrcode/.gitignore (100%) rename {statics => src/statics}/images/senditems/.gitignore (100%) rename {structs => src/structs}/auth_struct.go (100%) rename {structs => src/structs}/send_struct.go (100%) rename {utils => src/utils}/errors.go (100%) rename {utils => src/utils}/response.go (100%) rename {utils => src/utils}/whatsapp.go (100%) rename {validations => src/validations}/send_validation.go (100%) rename {validations => src/validations}/send_validation_test.go (100%) rename {validations => src/validations}/user_validation.go (100%) rename {views => src/views}/index.html (100%) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f0cf6e7 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3.2' +services: + whatsapp_go: + logging: + driver: "json-file" + options: + max-size: "200k" + max-file: "10" + build: + context: . + dockerfile: ./docker/golang.Dockerfile + restart: 'always' + ports: + - "3000:3000" \ No newline at end of file diff --git a/docker/golang.Dockerfile b/docker/golang.Dockerfile new file mode 100644 index 0000000..0a7a6f7 --- /dev/null +++ b/docker/golang.Dockerfile @@ -0,0 +1,23 @@ +############################ +# STEP 1 build executable binary +############################ +FROM golang:alpine AS builder +RUN apk update && apk add --no-cache vips-dev gcc musl-dev gcompat +WORKDIR /whatsapp +COPY ./src . + +# Fetch dependencies. +RUN go mod download +# Build the binary. +RUN go build -o app + +############################# +## STEP 2 build a smaller image +############################# +FROM alpine +RUN apk update && apk add --no-cache vips-dev +WORKDIR /whatsapp +# Copy compiled from builder. +COPY --from=builder /whatsapp . +# Run the binary. +ENTRYPOINT ["./app"] \ No newline at end of file diff --git a/openapi.yaml b/docs/openapi.yaml similarity index 100% rename from openapi.yaml rename to docs/openapi.yaml diff --git a/readme.md b/readme.md index e3bdb5d..dda5b6d 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ ## Go Whatsapp API Multi Device Version -### Required +### Required (without docker) - Mac OS: - `brew install vips` @@ -14,13 +14,28 @@ ### How to use +#### Basic + 1. Clone this repo `git clone https://github.com/aldinokemal/go-whatsapp-web-multi-device` -2. run `go run main.go` -3. open `http://localhost:3000` +2. open via cmd/terminal +3. run `cd src` +4. run `go run main.go` +5. open `http://localhost:3000` + +#### Docker (you don't need to install in required) + +1. Clone this repo `git clone https://github.com/aldinokemal/go-whatsapp-web-multi-device` +2. open via cmd/terminal +3. run `docker-compose up -d --build` +4. open `http://localhost:3000` + +## Production Mode (without config) +- `docker run --publish 3000:3000 --restart=always aldinokemal2104/go-whatsapp-web-multidevice` You can fork or edit this source code ! ### Current API +`You can check docs/openapi.yml for detail API` | Feature | Menu | Method | URL | Payload | |---------|-------------------------|--------|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/.air.toml b/src/.air.toml similarity index 100% rename from .air.toml rename to src/.air.toml diff --git a/config/settings.go b/src/config/settings.go similarity index 100% rename from config/settings.go rename to src/config/settings.go diff --git a/controllers/app_controller.go b/src/controllers/app_controller.go similarity index 100% rename from controllers/app_controller.go rename to src/controllers/app_controller.go diff --git a/controllers/send_controller.go b/src/controllers/send_controller.go similarity index 100% rename from controllers/send_controller.go rename to src/controllers/send_controller.go diff --git a/controllers/user_controller.go b/src/controllers/user_controller.go similarity index 100% rename from controllers/user_controller.go rename to src/controllers/user_controller.go diff --git a/go.mod b/src/go.mod similarity index 100% rename from go.mod rename to src/go.mod diff --git a/go.sum b/src/go.sum similarity index 100% rename from go.sum rename to src/go.sum diff --git a/main.go b/src/main.go similarity index 100% rename from main.go rename to src/main.go diff --git a/middleware/recovery.go b/src/middleware/recovery.go similarity index 100% rename from middleware/recovery.go rename to src/middleware/recovery.go diff --git a/services/app_service.go b/src/services/app_service.go similarity index 100% rename from services/app_service.go rename to src/services/app_service.go diff --git a/services/app_service_impl.go b/src/services/app_service_impl.go similarity index 100% rename from services/app_service_impl.go rename to src/services/app_service_impl.go diff --git a/services/send_service.go b/src/services/send_service.go similarity index 100% rename from services/send_service.go rename to src/services/send_service.go diff --git a/services/send_service_impl.go b/src/services/send_service_impl.go similarity index 100% rename from services/send_service_impl.go rename to src/services/send_service_impl.go diff --git a/services/user_service.go b/src/services/user_service.go similarity index 100% rename from services/user_service.go rename to src/services/user_service.go diff --git a/services/user_service_impl.go b/src/services/user_service_impl.go similarity index 100% rename from services/user_service_impl.go rename to src/services/user_service_impl.go diff --git a/statics/images/qrcode/.gitignore b/src/statics/images/qrcode/.gitignore similarity index 100% rename from statics/images/qrcode/.gitignore rename to src/statics/images/qrcode/.gitignore diff --git a/statics/images/senditems/.gitignore b/src/statics/images/senditems/.gitignore similarity index 100% rename from statics/images/senditems/.gitignore rename to src/statics/images/senditems/.gitignore diff --git a/structs/auth_struct.go b/src/structs/auth_struct.go similarity index 100% rename from structs/auth_struct.go rename to src/structs/auth_struct.go diff --git a/structs/send_struct.go b/src/structs/send_struct.go similarity index 100% rename from structs/send_struct.go rename to src/structs/send_struct.go diff --git a/utils/errors.go b/src/utils/errors.go similarity index 100% rename from utils/errors.go rename to src/utils/errors.go diff --git a/utils/response.go b/src/utils/response.go similarity index 100% rename from utils/response.go rename to src/utils/response.go diff --git a/utils/whatsapp.go b/src/utils/whatsapp.go similarity index 100% rename from utils/whatsapp.go rename to src/utils/whatsapp.go diff --git a/validations/send_validation.go b/src/validations/send_validation.go similarity index 100% rename from validations/send_validation.go rename to src/validations/send_validation.go diff --git a/validations/send_validation_test.go b/src/validations/send_validation_test.go similarity index 100% rename from validations/send_validation_test.go rename to src/validations/send_validation_test.go diff --git a/validations/user_validation.go b/src/validations/user_validation.go similarity index 100% rename from validations/user_validation.go rename to src/validations/user_validation.go diff --git a/views/index.html b/src/views/index.html similarity index 100% rename from views/index.html rename to src/views/index.html