committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 302 additions and 46 deletions
-
71air.toml
-
15docker-compose.yml
-
20docker/golang.Dockerfile
-
64docs/openapi.yaml
-
70src/.air.toml
-
48src/cmd/root.go
-
2src/go.mod
-
58src/views/doc.html
@ -0,0 +1,71 @@ |
|||
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format |
|||
|
|||
# Working directory |
|||
# . or absolute path, please note that the directories following must be under root. |
|||
root = "." |
|||
tmp_dir = "tmp" |
|||
|
|||
[build] |
|||
# Just plain old shell command. You could use `make` as well. |
|||
cmd = "go build -o /app/whatsapp" |
|||
# Binary file yields from `cmd`. |
|||
bin = "/app/whatsapp" |
|||
# Customize binary, can setup environment variables when run your app. |
|||
#full_bin = "APP_ENV=dev APP_USER=air /app/whatsapp" |
|||
# Watch these filename extensions. |
|||
include_ext = ["go", "tpl", "tmpl"] |
|||
# Ignore these filename extensions or directories. |
|||
exclude_dir = ["statics", "storages", "docker"] |
|||
# Watch these directories if you specified. |
|||
include_dir = [] |
|||
# Watch these files. |
|||
include_file = [] |
|||
# Exclude files. |
|||
exclude_file = [] |
|||
# Exclude specific regular expressions. |
|||
exclude_regex = ["_test\\.go"] |
|||
# Exclude unchanged files. |
|||
exclude_unchanged = true |
|||
# Follow symlink for directories |
|||
follow_symlink = true |
|||
# This log file places in your tmp_dir. |
|||
log = "air.log" |
|||
# Poll files for changes instead of using fsnotify. |
|||
poll = false |
|||
# Poll interval (defaults to the minimum interval of 500ms). |
|||
poll_interval = 500 # ms |
|||
# It's not necessary to trigger build each time file changes if it's too frequent. |
|||
delay = 0 # ms |
|||
# Stop running old binary when build errors occur. |
|||
stop_on_error = true |
|||
# Send Interrupt signal before killing process (windows does not support this feature) |
|||
send_interrupt = false |
|||
# Delay after sending Interrupt signal |
|||
kill_delay = 500 # ms |
|||
# Rerun binary or not |
|||
rerun = false |
|||
# Delay after each executions |
|||
rerun_delay = 500 |
|||
# Add additional arguments when running binary (bin/full_bin). Will run '/app/whatsapp hello world'. |
|||
args_bin = ["--os=Linux", "--debug", "true", "--basic-auth=admin:password"] |
|||
|
|||
[log] |
|||
# Show log time |
|||
time = false |
|||
# Only show main log (silences watcher, build, runner) |
|||
main_only = false |
|||
|
|||
[color] |
|||
# Customize each part's color. If no color found, use the raw app log. |
|||
main = "magenta" |
|||
watcher = "cyan" |
|||
build = "yellow" |
|||
runner = "green" |
|||
|
|||
[misc] |
|||
# Delete tmp directory on exit |
|||
clean_on_exit = true |
|||
|
|||
[screen] |
|||
clear_on_rebuild = true |
|||
keep_scroll = true |
|||
@ -1,23 +1,35 @@ |
|||
############################ |
|||
# STEP 1 build executable binary |
|||
############################ |
|||
FROM golang:alpine AS builder |
|||
FROM golang:1.20.5-alpine3.17 AS builder |
|||
RUN apk update && apk add --no-cache vips-dev gcc musl-dev gcompat ffmpeg |
|||
WORKDIR /whatsapp |
|||
COPY ./src . |
|||
|
|||
# Fetch dependencies. |
|||
RUN go mod download |
|||
#RUN go mod tidy -e |
|||
# Install pkger |
|||
RUN go install github.com/markbates/pkger/cmd/pkger@latest |
|||
# Build the binary. |
|||
RUN pkger && go build -o /app/whatsapp |
|||
RUN pkger |
|||
RUN go build -o /app/whatsapp |
|||
|
|||
|
|||
#FROM builder AS dev |
|||
#RUN go install github.com/cosmtrek/air@latest |
|||
#RUN go mod tidy |
|||
#RUN go mod download |
|||
|
|||
#CMD ["air", "-c", ".air.toml"] |
|||
|
|||
|
|||
############################# |
|||
## STEP 2 build a smaller image |
|||
############################# |
|||
FROM alpine:latest |
|||
RUN apk update && apk add --no-cache vips-dev ffmpeg |
|||
FROM alpine:3.17 as runtime |
|||
RUN apk update && apk add --no-cache vips ffmpeg |
|||
COPY ./docs /docs |
|||
WORKDIR /app |
|||
# Copy compiled from builder. |
|||
COPY --from=builder /app/whatsapp /app/whatsapp |
|||
|
|||
@ -1,5 +1,71 @@ |
|||
root = '.' |
|||
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format |
|||
|
|||
# Working directory |
|||
# . or absolute path, please note that the directories following must be under root. |
|||
root = "." |
|||
tmp_dir = "tmp" |
|||
|
|||
[build] |
|||
exclude_dir = ["statics", "views"] |
|||
# Just plain old shell command. You could use `make` as well. |
|||
cmd = "go build -o /app/whatsapp" |
|||
# Binary file yields from `cmd`. |
|||
bin = "/app/whatsapp" |
|||
# Customize binary, can setup environment variables when run your app. |
|||
full_bin = "APP_ENV=dev APP_USER=air /app/whatsapp" |
|||
# Watch these filename extensions. |
|||
include_ext = ["go", "tpl", "tmpl"] |
|||
# Ignore these filename extensions or directories. |
|||
exclude_dir = ["statics", "storages", "docker"] |
|||
# Watch these directories if you specified. |
|||
include_dir = [] |
|||
# Watch these files. |
|||
include_file = [] |
|||
# Exclude files. |
|||
exclude_file = [] |
|||
# Exclude specific regular expressions. |
|||
exclude_regex = ["_test\\.go"] |
|||
# Exclude unchanged files. |
|||
exclude_unchanged = true |
|||
# Follow symlink for directories |
|||
follow_symlink = true |
|||
# This log file places in your tmp_dir. |
|||
log = "air.log" |
|||
# Poll files for changes instead of using fsnotify. |
|||
poll = false |
|||
# Poll interval (defaults to the minimum interval of 500ms). |
|||
poll_interval = 500 # ms |
|||
# It's not necessary to trigger build each time file changes if it's too frequent. |
|||
delay = 0 # ms |
|||
# Stop running old binary when build errors occur. |
|||
stop_on_error = true |
|||
# Send Interrupt signal before killing process (windows does not support this feature) |
|||
send_interrupt = false |
|||
# Delay after sending Interrupt signal |
|||
kill_delay = 500 # ms |
|||
# Rerun binary or not |
|||
rerun = false |
|||
# Delay after each executions |
|||
rerun_delay = 500 |
|||
# Add additional arguments when running binary (bin/full_bin). Will run '/app/whatsapp hello world'. |
|||
args_bin = ["--os=Linux", "--debug", "true", "--basic-auth=admin:password"] |
|||
|
|||
[log] |
|||
# Show log time |
|||
time = false |
|||
# Only show main log (silences watcher, build, runner) |
|||
main_only = false |
|||
|
|||
[color] |
|||
# Customize each part's color. If no color found, use the raw app log. |
|||
main = "magenta" |
|||
watcher = "cyan" |
|||
build = "yellow" |
|||
runner = "green" |
|||
|
|||
[misc] |
|||
# Delete tmp directory on exit |
|||
clean_on_exit = true |
|||
|
|||
[screen] |
|||
clear_on_rebuild = true |
|||
keep_scroll = true |
|||
@ -0,0 +1,58 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="UTF-8"> |
|||
<title>Swagger UI</title> |
|||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet"> |
|||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.24.2/swagger-ui.css" > |
|||
<style> |
|||
html |
|||
{ |
|||
box-sizing: border-box; |
|||
overflow: -moz-scrollbars-vertical; |
|||
overflow-y: scroll; |
|||
} |
|||
*, |
|||
*:before, |
|||
*:after |
|||
{ |
|||
box-sizing: inherit; |
|||
} |
|||
body { |
|||
margin:0; |
|||
background: #fafafa; |
|||
} |
|||
</style> |
|||
</head> |
|||
<body> |
|||
<div id="swagger-ui"></div> |
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.24.2/swagger-ui-bundle.js"> </script> |
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.24.2/swagger-ui-standalone-preset.js"> </script> |
|||
<script src="https://unpkg.com/vue@3"></script> |
|||
<script src="https://unpkg.com/axios@1.1.2/dist/axios.min.js"></script> |
|||
<script> |
|||
const http = axios.create({ |
|||
baseURL: {{ .AppHost }} |
|||
}); |
|||
{{ if isEnableBasicAuth .BasicAuthToken }} |
|||
http.defaults.headers.common['Authorization'] = {{ .BasicAuthToken }}; |
|||
{{ end }} |
|||
window.onload = function() { |
|||
var spec = {{ .Spec }}; |
|||
// Build a system |
|||
const ui = SwaggerUIBundle({ |
|||
spec: JSON.parse(spec), |
|||
dom_id: '#swagger-ui', |
|||
deepLinking: true, |
|||
presets: [ |
|||
SwaggerUIBundle.presets.apis |
|||
], |
|||
plugins: [ |
|||
SwaggerUIBundle.plugins.DownloadUrl |
|||
] |
|||
}) |
|||
window.ui = ui |
|||
} |
|||
</script> |
|||
</body> |
|||
</html> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue