(Feat): Initial Commit
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled

This commit is contained in:
2026-07-03 19:41:31 +05:30
commit 7e940c83a7
461 changed files with 45002 additions and 0 deletions

168
docker-compose.yml Normal file
View File

@@ -0,0 +1,168 @@
services:
service:
build:
context: .
target: development
ports:
- "8080:8080"
working_dir: &PROJECT_ROOT_DIR /app
# linux permissions / vscode support: we must explicitly run as the development user
user: development
volumes:
# mount working directory
# https://code.visualstudio.com/docs/remote/containers-advanced#_update-the-mount-consistency-to-delegated-for-macos
# https://docs.docker.com/docker-for-mac/osxfs-caching/#delegated
# the containers view is authoritative (permit delays before updates on the container appear in the host)
- .:/app:delegated
# mount cached go pkg downloads
- go-pkg:/go/pkg
# speed up tmp dirs in working directory by using separate volumes (not the host's filesystem)
- workdir-api-tmp:/app/api/tmp
- workdir-bin:/app/bin
- workdir-tmp:/app/tmp
# mount cached vscode container extensions
# https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
- vscode-extensions:/home/development/.vscode-server/extensions
- vscode-extensions-insiders:/home/development/.vscode-server-insiders/extensions
# https://code.visualstudio.com/remote/advancedcontainers/persist-bash-history
# keep user development .bash_history between container restarts
- bash-history:/home/development/commandhistory
depends_on:
- postgres
- integresql
environment:
# required: env for main working database, service
# default for sql-migrate (target development) and psql cli tool
PGDATABASE: &PGDATABASE "development"
PGUSER: &PGUSER "dbuser"
PGPASSWORD: &PGPASSWORD "dbpass"
PGHOST: &PGHOST "postgres"
PGPORT: &PGPORT "5432"
PGSSLMODE: &PGSSLMODE "disable"
# optional: env for sql-boiler (ability to generate models out of a "spec" database)
# sql-boiler should operate on a "spec" database only
PSQL_DBNAME: "spec"
PSQL_USER: *PGUSER
PSQL_PASS: *PGPASSWORD
PSQL_HOST: *PGHOST
PSQL_PORT: *PGPORT
PSQL_SSLMODE: *PGSSLMODE
# optional: project root directory, used for relative path resolution (e.g. fixtures)
PROJECT_ROOT_DIR: *PROJECT_ROOT_DIR
# optional: env for integresql client testing
# INTEGRESQL_CLIENT_BASE_URL: "http://integresql:5000/api"
# optional: enable pretty print of log output
# intended use is for development and debugging purposes only
# not recommended to enable on production systems due to performance penalty and loss of parsing ability
SERVER_LOGGER_PRETTY_PRINT_CONSOLE: "true"
# optional: static management secret to easily call http://localhost:8080/-/healthy?mgmt-secret=mgmtpass
SERVER_MANAGEMENT_SECRET: "mgmtpass"
# path to the changie config
CHANGIE_CONFIG_PATH: "/app/.changie-go-starter.yaml"
# Uncomment the next four lines if you will use a ptrace-based debugger like C++, Go, and Rust.
cap_add:
- SYS_PTRACE
security_opt:
- seccomp:unconfined
# Overrides default command so things don't shut down after the process ends.
command:
- /bin/sh
- -c
- |
sudo chown -R development:development /app/api/tmp
sudo chown -R development:development /app/bin
sudo chown -R development:development /app/tmp
chmod +x /app/rksh
git config --global --add safe.directory /app
while sleep 1000; do :; done
postgres:
image: postgres:17.4-alpine # should be the same version as used in .drone.yml, .github/workflows, Dockerfile and live
# ATTENTION
# fsync=off, synchronous_commit=off and full_page_writes=off
# gives us a major speed up during local development and testing (~30%),
# however you should NEVER use these settings in PRODUCTION unless
# you want to have CORRUPTED data.
# DO NOT COPY/PASTE THIS BLINDLY.
# YOU HAVE BEEN WARNED.
# Apply some performance improvements to pg as these guarantees are not needed while running locally
command: "postgres -c 'shared_buffers=128MB' -c 'fsync=off' -c 'synchronous_commit=off' -c 'full_page_writes=off' -c 'max_connections=100' -c 'client_min_messages=warning'"
expose:
- "5432"
ports:
- "5432:5432"
environment:
POSTGRES_DB: *PGDATABASE
POSTGRES_USER: *PGUSER
POSTGRES_PASSWORD: *PGPASSWORD
volumes:
- pgvolume:/var/lib/postgresql/data
integresql:
image: ghcr.io/allaboutapps/integresql:v1.1.0
expose:
- "5000"
depends_on:
- postgres
environment:
PGHOST: *PGHOST
PGUSER: *PGUSER
PGPASSWORD: *PGPASSWORD
mailhog:
image: mailhog/mailhog
expose:
- "1025"
ports:
- "8025:8025"
swaggerui:
image: swaggerapi/swagger-ui:v3.46.0
environment:
SWAGGER_JSON: "/api/swagger.yml"
volumes:
# mount our local main swagger.yml file (refresh your browser to see changes)
- ./api:/api:ro,consistent
# mount overwritten translator.js (intercept requests port 8081 to our local service on port 8080)
- ./api/config/swagger-ui-local-translator.js:/usr/share/nginx/configurator/translator.js:ro,delegated
swaggerui-browser-sync:
image: allaboutapps/browser-sync:v2.26.14
command: start --proxy 'swaggerui:8080' --port 8081 --files "/api/*.yml"
volumes:
- ./api:/api:ro,consistent
ports:
- "8081:8081"
volumes:
# postgresql: declare a named volume to persist DB data
pgvolume:
# go: go mod cached downloads
go-pkg:
# tmp dirs in workdir
workdir-api-tmp:
workdir-bin:
workdir-tmp:
# vscode: Avoiding extension reinstalls on container rebuild
# https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
vscode-extensions:
vscode-extensions-insiders:
# https://code.visualstudio.com/remote/advancedcontainers/persist-bash-history
bash-history: