Initial import: KeepNote service (dcntrlized-auth consumer)
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# Source: https://oneuptime.com/blog/post/2026-01-07-go-hot-reloading-docker-air/view#step-4-set-up-docker-compose
|
||||
|
||||
# docker-compose.yml
|
||||
# Development environment with hot reloading
|
||||
|
||||
services:
|
||||
# Main Go application with Air hot reloading
|
||||
keepnote-debug:
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
||||
image: keepnote-debug
|
||||
container_name: keepnote-debug
|
||||
|
||||
# Build from our development Dockerfile
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.debug
|
||||
network: host
|
||||
|
||||
|
||||
# Expose ports: host:container
|
||||
ports:
|
||||
- "8081:8080" # Application port
|
||||
- "2345:2345" # Delve debugger port (optional)
|
||||
# - "8081:8081" # HTTP Dev interface
|
||||
|
||||
|
||||
# Volume mounts - THE KEY TO HOT RELOADING
|
||||
# Mount source code as a volume so changes are reflected immediately
|
||||
volumes:
|
||||
- ./src:/app
|
||||
- go-mod-cache:/go/pkg/mod
|
||||
- go-build-cache:/root/.cache/go-build
|
||||
- /app/src/tmp # Exclude Air's tmp dir from syncing
|
||||
|
||||
working_dir: /app/
|
||||
|
||||
# Environment variables for the application
|
||||
environment:
|
||||
- DEV_MODE=true
|
||||
# Application configuration
|
||||
# - PORT=8080
|
||||
# - ENVIRONMENT=development
|
||||
# - LOG_LEVEL=debug
|
||||
|
||||
# Database connection (shared database on the dcntrlized network)
|
||||
- DATABASE_URL=postgres://postgres:@dcntrlized-db:5432/dcntrlized
|
||||
|
||||
# Go specific settings
|
||||
- GO111MODULE=on
|
||||
- GOPROXY=http://192.168.122.184:3000/api/packages/Dcntrlized/go,https://proxy.golang.org,direct
|
||||
- GONOSUMDB=git.dcntrlized.org
|
||||
|
||||
depends_on:
|
||||
- migrate
|
||||
|
||||
# Restart policy for development
|
||||
restart: unless-stopped
|
||||
|
||||
# Network for service communication
|
||||
networks:
|
||||
- dcntrlized_net
|
||||
|
||||
cap_add:
|
||||
- SYS_PTRACE
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
|
||||
migrate:
|
||||
image: postgres:16-alpine
|
||||
container_name: keepnote-migrate
|
||||
labels:
|
||||
org.dcntrlized.oneoff: "true"
|
||||
networks:
|
||||
- dcntrlized_net
|
||||
volumes:
|
||||
- ./database/migrations:/migrations:ro
|
||||
environment:
|
||||
- PGHOST=dcntrlized-db
|
||||
- PGPORT=5432
|
||||
- PGUSER=postgres
|
||||
- PGPASSWORD=
|
||||
- PGDATABASE=dcntrlized
|
||||
command: >
|
||||
sh -c 'until pg_isready -h dcntrlized-db -U postgres -d dcntrlized; do sleep 2; done;
|
||||
for f in /migrations/*.sql; do [ -f "$$f" ] || continue; echo "Applying $$f"; psql -v ON_ERROR_STOP=1 -d dcntrlized -f "$$f" || exit 1; done'
|
||||
|
||||
# Named volumes for data persistence and caching
|
||||
volumes:
|
||||
# Go module cache - shared across rebuilds
|
||||
go-mod-cache:
|
||||
driver: local
|
||||
|
||||
# Go build cache - speeds up compilation
|
||||
go-build-cache:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
dcntrlized_net:
|
||||
external: true
|
||||
Reference in New Issue
Block a user