Compare commits
3 commits
c3d882f4fd
...
1c1c4ffa73
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c1c4ffa73 | ||
|
|
1b052bd48e | ||
|
|
742ca53c1d |
|
|
@ -8,8 +8,10 @@ RUN go mod download
|
|||
|
||||
COPY . .
|
||||
|
||||
# Build with CGO enabled for sqlite
|
||||
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o fitness-app ./main.go
|
||||
# Build native for the host architecture (ARM64 on Hetzner)
|
||||
RUN CGO_ENABLED=1 go build -o fitness-app ./main.go
|
||||
|
||||
|
||||
|
||||
# Runtime stage
|
||||
FROM debian:bookworm-slim
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
version: "3.9"
|
||||
|
||||
services:
|
||||
fitness:
|
||||
build: .
|
||||
|
|
@ -12,6 +10,35 @@ services:
|
|||
# Host folder -> container /data
|
||||
# On host, your db will be: ./fitness-data/fitness.db
|
||||
- ./fitness-data:/data
|
||||
ports:
|
||||
# ports:
|
||||
# For quick testing; in production you'd put Traefik in front instead
|
||||
- "8080:8080"
|
||||
# - "8080:8080"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
|
||||
# Public domain
|
||||
- "traefik.http.routers.fitness.rule=Host(`fitness.rozic-dev.com`)"
|
||||
|
||||
# Listen on HTTP & HTTPS
|
||||
- "traefik.http.routers.fitness.entrypoints=web,websecure"
|
||||
|
||||
# Force HTTPS using your GLOBAL redirect middleware
|
||||
- "traefik.http.routers.fitness.middlewares=redirect-to-https, fitness-auth"
|
||||
|
||||
# TLS + Let's Encrypt
|
||||
- "traefik.http.routers.fitness.tls=true"
|
||||
- "traefik.http.routers.fitness.tls.certresolver=letsencrypt"
|
||||
|
||||
# App internal port
|
||||
- "traefik.http.services.fitness.loadbalancer.server.port=8080"
|
||||
|
||||
# - "traefik.http.routers.traefik.middlewares=fitness-auth"
|
||||
#- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$8EVjn/nj$$GiLUZqcbueTFeD23SuB6x0" # admin:admin123
|
||||
#- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$apr1$yGKxPD8U$z4eeZaKNzoASEpr2yh4wQ" # admin:admin123
|
||||
- "traefik.http.middlewares.fitness-auth.basicauth.users=Dejan:$$apr1$$F5Y8CeQ1$$C2jX95nwyeJAjhtGxvnOJ/" # admin:admin123
|
||||
networks:
|
||||
- traefik_default
|
||||
|
||||
networks:
|
||||
traefik_default:
|
||||
external: true
|
||||
21
readme.md
21
readme.md
|
|
@ -154,10 +154,27 @@ services:
|
|||
# ... existing configuration ...
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.fitness.rule=Host(`fitness.yourdomain.com`)"
|
||||
- "traefik.http.routers.fitness.entrypoints=websecure"
|
||||
|
||||
# Public domain
|
||||
- "traefik.http.routers.fitness.rule=Host(`fitness.domain.com`)"
|
||||
|
||||
# Listen on HTTP & HTTPS
|
||||
- "traefik.http.routers.fitness.entrypoints=web,websecure"
|
||||
|
||||
# Force HTTPS using your GLOBAL redirect middleware
|
||||
- "traefik.http.routers.fitness.middlewares=redirect-to-https, fitness-auth"
|
||||
|
||||
# TLS + Let's Encrypt
|
||||
- "traefik.http.routers.fitness.tls=true"
|
||||
- "traefik.http.routers.fitness.tls.certresolver=letsencrypt"
|
||||
|
||||
# App internal port
|
||||
- "traefik.http.services.fitness.loadbalancer.server.port=8080"
|
||||
|
||||
# - "traefik.http.routers.traefik.middlewares=fitness-auth"
|
||||
#- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$8EVjn/nj$$GiLUZqcbueTFeD23SuB6x0" # admin:admin123
|
||||
#- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$apr1$yGKxPD8U$z4eeZaKNzoASEpr2yh4wQ" # admin:admin123
|
||||
- "traefik.http.middlewares.fitness-auth.basicauth.users=Dejan:$$apr1$$F5Y8CeQ1$$C2jX95nwyeJAjhtGxvnOJ/" # admin:admin123
|
||||
networks:
|
||||
- traefik_default
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue