110 lines
2.8 KiB
YAML
110 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: https://${GITEA_DOMAIN}/
|
|
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"
|
|
- "${HTTPS_PORT:-8643}:443"
|
|
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
|