feat: add infrastructure container definitions and update documentation
This commit is contained in:
parent
975557e10c
commit
6529b5cd8b
11 changed files with 214 additions and 0 deletions
12
containers/gohorse-backend.service
Normal file
12
containers/gohorse-backend.service
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
[Unit]
|
||||
Description=GoHorseJobs Backend Dev
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
ExecStartPre=-/usr/bin/podman rm -f gohorsejobs-backend-dev
|
||||
ExecStart=/usr/bin/podman run --name gohorsejobs-backend-dev --rm --network web_proxy -v /mnt/data/gohorsejobs/backend:/app:Z -w /app -p 8080:8080 -e PORT=8080 -e DB_HOST=postgres-main -e DB_PORT=5432 -e DB_USER=saveinmed -e DB_PASSWORD=4J4ZTLY4Ks34geDVvjOiLWKor8n4J4 -e DB_NAME=gohorsejobs -e DB_SSLMODE=disable --label traefik.enable=true --label "traefik.http.routers.gohorse-backend.rule=Host(`api-local.gohorsejobs.com`)" --label traefik.http.routers.gohorse-backend.entrypoints=websecure --label traefik.http.routers.gohorse-backend.tls.certresolver=main --label traefik.http.services.gohorse-backend.loadbalancer.server.port=8080 golang:1.24 go run ./cmd/api/main.go
|
||||
ExecStop=/usr/bin/podman stop -t 10 gohorsejobs-backend-dev
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
12
containers/gohorse-backoffice.service
Normal file
12
containers/gohorse-backoffice.service
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
[Unit]
|
||||
Description=GoHorseJobs Backoffice Dev
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
ExecStartPre=-/usr/bin/podman rm -f gohorsejobs-backoffice-dev
|
||||
ExecStart=/usr/bin/podman run --name gohorsejobs-backoffice-dev --rm --network web_proxy -v /mnt/data/gohorsejobs/backoffice:/app:Z -w /app -p 3001:3001 -e PORT=3001 -e DATABASE_URL=postgresql://saveinmed:4J4ZTLY4Ks34geDVvjOiLWKor8n4J4@postgres-main:5432/gohorsejobs --label traefik.enable=true --label "traefik.http.routers.gohorse-backoffice.rule=Host(`b-local.gohorsejobs.com`)" --label traefik.http.routers.gohorse-backoffice.entrypoints=websecure --label traefik.http.routers.gohorse-backoffice.tls.certresolver=main --label traefik.http.services.gohorse-backoffice.loadbalancer.server.port=3001 node:20 npm run start:dev
|
||||
ExecStop=/usr/bin/podman stop -t 10 gohorsejobs-backoffice-dev
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
12
containers/gohorse-frontend.service
Normal file
12
containers/gohorse-frontend.service
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
[Unit]
|
||||
Description=GoHorseJobs Frontend Dev
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
ExecStartPre=-/usr/bin/podman rm -f gohorsejobs-frontend-dev
|
||||
ExecStart=/usr/bin/podman run --name gohorsejobs-frontend-dev --rm --network web_proxy -v /mnt/data/gohorsejobs/frontend:/app:Z -w /app -p 3000:3000 --label traefik.enable=true --label "traefik.http.routers.gohorse-frontend.rule=Host(`dev-local.gohorsejobs.com`)" --label traefik.http.routers.gohorse-frontend.entrypoints=websecure --label traefik.http.routers.gohorse-frontend.tls.certresolver=main --label traefik.http.services.gohorse-frontend.loadbalancer.server.port=3000 node:20 npm run dev
|
||||
ExecStop=/usr/bin/podman stop -t 10 gohorsejobs-frontend-dev
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
29
containers/postgres-nc2.container
Normal file
29
containers/postgres-nc2.container
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
[Unit]
|
||||
Description=PostgreSQL Database (NC2)
|
||||
After=network-online.target
|
||||
|
||||
[Container]
|
||||
ContainerName=postgres
|
||||
Image=docker.io/library/postgres:16-alpine
|
||||
|
||||
Environment=POSTGRES_USER=admin
|
||||
Environment=POSTGRES_PASSWORD=sua_senha_segura
|
||||
Environment=POSTGRES_DB=app_db
|
||||
|
||||
# Existing volume on NC2
|
||||
Volume=/mnt/postgres/data:/var/lib/postgresql/data:Z
|
||||
|
||||
Network=web_proxy
|
||||
NetworkAlias=postgres
|
||||
|
||||
# External Access via Traefik (TCP Over TLS)
|
||||
Label=traefik.enable=true
|
||||
Label=traefik.tcp.routers.postgres-nc2.rule=HostSNI(`db.nc2.rede5.com.br`)
|
||||
Label=traefik.tcp.routers.postgres-nc2.entrypoints=websecure
|
||||
Label=traefik.tcp.routers.postgres-nc2.tls=true
|
||||
Label=traefik.tcp.routers.postgres-nc2.tls.certresolver=myresolver
|
||||
Label=traefik.tcp.services.postgres-nc2.loadbalancer.server.port=5432
|
||||
Label=traefik.docker.network=web_proxy
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
28
containers/postgres.container
Normal file
28
containers/postgres.container
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
[Unit]
|
||||
Description=PostgreSQL Main Database
|
||||
After=network-online.target
|
||||
|
||||
[Container]
|
||||
ContainerName=postgres-main
|
||||
Image=docker.io/library/postgres:17-alpine
|
||||
|
||||
Environment=POSTGRES_USER=saveinmed
|
||||
Environment=POSTGRES_PASSWORD=ZTLY4Ks34geDVvjOiLWKor8n4J4
|
||||
Environment=POSTGRES_DB=saveinmed
|
||||
|
||||
Volume=/mnt/data/postgres:/var/lib/postgresql/data:Z
|
||||
|
||||
Network=web_proxy
|
||||
NetworkAlias=postgres-main
|
||||
|
||||
# External Access via Traefik (TCP Over TLS)
|
||||
Label=traefik.enable=true
|
||||
Label=traefik.tcp.routers.postgres-main.rule=HostSNI(`db.nc1.rede5.com.br`)
|
||||
Label=traefik.tcp.routers.postgres-main.entrypoints=websecure
|
||||
Label=traefik.tcp.routers.postgres-main.tls=true
|
||||
Label=traefik.tcp.routers.postgres-main.tls.certresolver=myresolver
|
||||
Label=traefik.tcp.services.postgres-main.loadbalancer.server.port=5432
|
||||
Label=traefik.docker.network=web_proxy
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
15
containers/q1-backend-dev.container
Normal file
15
containers/q1-backend-dev.container
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Q1-Total Backend Dev
|
||||
After=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=docker.io/python:3.12
|
||||
Volume=/mnt/data/q1-total-dev/backend:/app:z
|
||||
PodmanArgs=--publish=8001:8000 --env=PORT=8000
|
||||
Exec=sh -c "cd /app && pip install uv && uv sync && uv run uvicorn app.main:app --host 0.0.0.0 --port 8000"
|
||||
Label=traefik.enable=true
|
||||
Label=traefik.http.routers.q1-backend-dev.rule=Host('api-dev.q1-total.com.br')
|
||||
Label=traefik.http.services.q1-backend-dev.loadbalancer.server.port=8000
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
15
containers/q1-dashboard-dev.container
Normal file
15
containers/q1-dashboard-dev.container
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Q1-Total Dashboard Dev
|
||||
After=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=docker.io/node:20
|
||||
Volume=/mnt/data/q1-total-dev/dashboard:/app:z
|
||||
PodmanArgs=--publish=3002:5173 --env=PORT=5173
|
||||
Exec=sh -c "cd /app && npm install && npm run dev -- --host 0.0.0.0"
|
||||
Label=traefik.enable=true
|
||||
Label=traefik.http.routers.q1-dashboard-dev.rule=Host('dashboard-dev.q1-total.com.br')
|
||||
Label=traefik.http.services.q1-dashboard-dev.loadbalancer.server.port=5173
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
15
containers/traefik.container
Normal file
15
containers/traefik.container
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Traefik Service
|
||||
After=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=docker.io/library/traefik:latest
|
||||
PublishPort=80:80
|
||||
PublishPort=443:443
|
||||
Volume=/run/podman/podman.sock:/var/run/docker.sock:Z
|
||||
Volume=/opt/traefik/letsencrypt:/letsencrypt:Z
|
||||
Network=web_proxy
|
||||
Exec=--providers.docker=true --providers.docker.exposedbydefault=false --entrypoints.web.address=:80 --entrypoints.websecure.address=:443 --certificatesresolvers.main.acme.email=saveinmed@gmail.com --certificatesresolvers.main.acme.storage=/letsencrypt/acme.json --certificatesresolvers.main.acme.httpchallenge.entrypoint=web
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
14
containers/uptime-kuma.container
Normal file
14
containers/uptime-kuma.container
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[Unit]
|
||||
Description=Uptime Kuma
|
||||
After=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=louislam/uptime-kuma:1
|
||||
Volume=/mnt/data/uptime-kuma:/app/data:Z
|
||||
PublishPort=3005:3001
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
25
containers/vaultwarden.container
Normal file
25
containers/vaultwarden.container
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
[Unit]
|
||||
Description=Vaultwarden Password Manager
|
||||
After=network-online.target postgres.service
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Container]
|
||||
Image=docker.io/vaultwarden/server:latest
|
||||
ContainerName=vaultwarden
|
||||
Volume=/mnt/data/vaultwarden:/data:Z
|
||||
Environment=DATABASE_URL=postgresql://saveinmed:ZTLYe7OIBQDVvjOiLWKor8n4J4Ks34ge@postgres-main:5432/vaultwarden
|
||||
Environment=DOMAIN=https://vault.rede5.com.br
|
||||
Environment=SIGNUPS_ALLOWED=true
|
||||
Environment=ADMIN_TOKEN=
|
||||
PublishPort=8090:80
|
||||
Network=web_proxy
|
||||
Label=traefik.enable=true
|
||||
Label=traefik.http.routers.vaultwarden.rule=Host(`vault.rede5.com.br`)
|
||||
Label=traefik.http.routers.vaultwarden.entrypoints=websecure
|
||||
Label=traefik.http.routers.vaultwarden.tls.certresolver=myresolver
|
||||
Label=traefik.http.services.vaultwarden.loadbalancer.server.port=80
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
37
containers/virtual-fashion-minio.container
Normal file
37
containers/virtual-fashion-minio.container
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
[Unit]
|
||||
Description=Virtual Fashion MinIO
|
||||
After=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=docker.io/minio/minio:latest
|
||||
AutoUpdate=registry
|
||||
|
||||
Environment=MINIO_ROOT_USER=virtual_fashion_admin
|
||||
Environment=MINIO_ROOT_PASSWORD=VF_m1n10_s3cur3_p@ssw0rd_2025
|
||||
Environment=MINIO_BROWSER_REDIRECT_URL=https://minio-console.virtualfashion.com.br
|
||||
|
||||
Volume=/mnt/data/virtual-fashion/minio:/data:Z
|
||||
|
||||
Exec=server /data --console-address ":9001"
|
||||
|
||||
Network=web_proxy
|
||||
NetworkAlias=minio
|
||||
|
||||
# Traefik (API)
|
||||
Label=traefik.enable=true
|
||||
Label=traefik.http.routers.virtual-fashion-minio.rule=Host(`minio.virtualfashion.com.br`) || Host(`minio-dev.virtualfashion.com.br`)
|
||||
Label=traefik.http.routers.virtual-fashion-minio.entrypoints=websecure
|
||||
Label=traefik.http.routers.virtual-fashion-minio.tls.certresolver=myresolver
|
||||
Label=traefik.http.routers.virtual-fashion-minio.service=virtual-fashion-minio-api
|
||||
Label=traefik.http.services.virtual-fashion-minio-api.loadbalancer.server.port=9000
|
||||
|
||||
# Traefik (Console)
|
||||
Label=traefik.http.routers.virtual-fashion-minio-console.rule=Host(`minio-console.virtualfashion.com.br`) || Host(`minio-console-dev.virtualfashion.com.br`)
|
||||
Label=traefik.http.routers.virtual-fashion-minio-console.entrypoints=websecure
|
||||
Label=traefik.http.routers.virtual-fashion-minio-console.tls.certresolver=myresolver
|
||||
Label=traefik.http.routers.virtual-fashion-minio-console.service=virtual-fashion-minio-console
|
||||
Label=traefik.http.services.virtual-fashion-minio-console.loadbalancer.server.port=9001
|
||||
Label=traefik.docker.network=web_proxy
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Loading…
Reference in a new issue