Files
2026-07-28 17:30:17 -05:00

109 lines
2.8 KiB
YAML

name: tapm
x-default-logging: &default-logging
driver: json-file
options:
max-size: "10m"
max-file: "5"
services:
broker:
container_name: tapm-broker
build: .
image: tai/tapm-deployment-broker:local
env_file:
- path: .env
required: false
restart: unless-stopped
init: true
pids_limit: 128
logging: *default-logging
read_only: true
networks:
- edge
volumes:
- ./config/broker:/data
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
tmpfs:
- /tmp:size=16m,mode=1777
healthcheck:
test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:8080/health/ready"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
gitea:
container_name: tapm-gitea
image: docker.gitea.com/gitea:1.26.4-rootless
restart: unless-stopped
pids_limit: 512
logging: *default-logging
networks:
- edge
volumes:
- ./config/gitea/data:/var/lib/gitea
- ./config/gitea/config:/etc/gitea
environment:
GITEA__database__DB_TYPE: sqlite3
GITEA__database__PATH: /var/lib/gitea/data/gitea.db
GITEA__server__DOMAIN: ${GITEA_DOMAIN}
GITEA__server__ROOT_URL: ${GITEA_PUBLIC_URL}
GITEA__server__HTTP_ADDR: 0.0.0.0
GITEA__server__HTTP_PORT: "3000"
GITEA__server__DISABLE_SSH: "true"
GITEA__session__COOKIE_SECURE: "true"
GITEA__service__DISABLE_REGISTRATION: "true"
GITEA__security__INSTALL_LOCK: "true"
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:3000/api/healthz"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
nginx:
container_name: tapm-nginx
image: nginx:1.28-alpine
restart: unless-stopped
read_only: true
pids_limit: 128
logging: *default-logging
networks:
- edge
ports:
- "${HTTP_PORT:-8680}:80"
volumes:
- ./deploy/nginx/templates/bootstrap.conf.template:/etc/nginx/templates/default.conf.template:ro
- ./config/certbot-webroot:/var/www/certbot:ro
environment:
BROKER_DOMAIN: ${BROKER_DOMAIN}
GITEA_DOMAIN: ${GITEA_DOMAIN}
SSL_CERTIFICATE_FILE: ${SSL_CERTIFICATE_FILE:-fullchain.pem}
SSL_CERTIFICATE_KEY_FILE: ${SSL_CERTIFICATE_KEY_FILE:-privkey.pem}
security_opt:
- no-new-privileges:true
tmpfs:
- /etc/nginx/conf.d:size=1m,mode=0755
- /var/cache/nginx:size=32m,mode=0755
- /var/run:size=1m,mode=0755
certbot:
image: certbot/certbot:v5.7.0
profiles: ["tools"]
pids_limit: 128
logging: *default-logging
volumes:
- ./config/letsencrypt:/etc/letsencrypt
- ./config/certbot-webroot:/var/www/certbot
networks:
edge:
external: true
name: tapm-edge