This repository has been archived on 2020-08-11. You can view files and clone it, but cannot push or open issues or pull requests.
stack/docker-compose-proxy.yml

167 lines
4.7 KiB
YAML

version: "3.7"
services:
letsencrypt-git:
# nginx reverse proxy for all apps (except drone in a subdomain)
# automatically obtains and refreshes ssl certificates with letsencrypt
deploy:
placement:
constraints: [node.labels.com.sigyl.git-stack == yes]
replicas: 1
restart_policy:
condition: any
image: ${LOCAL_DOCKER_REGISTRY}letsencrypt-git
environment:
- CERTBOT_EMAIL=${CERTBOT_EMAIL}
- SERVER_NAME=${GIT_DOMAIN}
- GIT_PROXY_PASS=http://${SIGYL_STACK_NAME}_gitea:3000/
- BLOG_PROXY_PASS=http://${SIGYL_STACK_NAME}_ghost:2368/
- CHAT_PROXY_PASS=http://${SIGYL_STACK_NAME}_chat:3000/
- COMMENTO_PROXY_PASS=http://${SIGYL_STACK_NAME}_commento:8080/
- REMOTE_PROXY_PASS=http://${SIGYL_STACK_NAME}_guacamole:8080/guacamole/
- DRONE_PROXY_PASS=http://${SIGYL_STACK_NAME}_drone-server:8080/
- REGISTRY_PROXY_PASS=http://registry-1:5000
- PORTAINER_PROXY_PASS=http://${SIGYL_STACK_NAME}_portainer:9000/
- PORTAINER_LOCATION=/portainer/
- MATOMO_PROXY_PASS=http://${SIGYL_STACK_NAME}_matomo-web/
- MATOMO_LOCATION=/analytics/
- NAGIOS_PROXY_PASS=http://${SIGYL_STACK_NAME}_nagios/
- NAGIOS_LOCATION=/nagios/
- ZABBIX_PROXY_PASS=http://${SIGYL_STACK_NAME}_zabbix-web:8080/
- ZABBIX_LOCATION=/zabbix/
- GIT_LOCATION=/git/
- BLOG_LOCATION=/
- CHAT_LOCATION=/chat/
- COMMENTO_LOCATION=/comment/
- REMOTE_LOCATION=/remote/
- TITLE=$TITLE
- DESCRIPTION=$DESCRIPTION
- DRONE_REPO_LINK=$DRONE_REPO_LINK
- DRONE_COMMIT=$DRONE_COMMIT
volumes:
- letsencrypt-git:/etc/letsencrypt
networks:
- externalnet
- appnet
ports:
- 80:80
- 443:443
- 5000:5000
- 5001:5001
- 5005:5005
letsencrypt-drone:
# reverse proxy for drone in a subdomain
deploy:
placement:
constraints: [node.labels.com.sigyl.git-stack-data == yes]
replicas: 0
restart_policy:
condition: any
image: ${LOCAL_DOCKER_REGISTRY}letsencrypt-drone
environment:
- CERTBOT_EMAIL=${CERTBOT_EMAIL}
- SERVER_NAME=${DRONE_DOMAIN}
- PROXY_PASS=http://${SIGYL_STACK_NAME}_drone-server:8080/
volumes:
- letsencrypt-drone:/etc/letsencrypt
networks:
- appnet
- externalnet
ngrok:
# ngrok tunnel client
deploy:
placement:
constraints: [node.labels.com.sigyl.git-stack == yes]
replicas: 0
restart_policy:
condition: any
image: ${LOCAL_DOCKER_REGISTRY}ngrok-gitea
ports:
- "4040:4040"
environment:
- GIT_DOMAIN=${GIT_DOMAIN}
- DRONE_DOMAIN=${DRONE_DOMAIN}
- REMOTE_DOMAIN=${REMOTE_DOMAIN}
- BLOG_DOMAIN=${BLOG_DOMAIN}
- CHAT_DOMAIN=${CHAT_DOMAIN}
- NGROK_AUTH_TOKEN=${NGROK_AUTH_TOKEN}
networks:
- appnet
registry:
# internal registry
deploy:
placement:
constraints: [node.labels.com.sigyl.git-stack == yes]
replicas: 1
restart_policy:
condition: any
image: registry:2
volumes:
- registry-data:/var/lib/registry
environment:
- REGISTRY_HTTP_ADDR=0.0.0.0:5000
- REGISTRY_HTTP_TLS_CERTIFICATE="/run/secrets/registry-cert"
- REGISTRY_HTTP_TLS_KEY="/run/secrets/registry-key"
networks:
- appnet
secrets:
- registry-cert
- registry-key
ports:
- 5003:5000
registry-cache:
# registry cache (used?)
deploy:
placement:
constraints: [node.labels.com.sigyl.git-stack == yes]
replicas: 1
restart_policy:
condition: any
image: registry:2
ports:
- 5002:5001
volumes:
- registry-cache-data:/var/lib/registry
environment:
- REGISTRY_HTTP_ADDR=0.0.0.0:5001
- REGISTRY_HTTP_TLS_CERTIFICATE="/run/secrets/registry-cert"
- REGISTRY_HTTP_TLS_KEY="/run/secrets/registry-key"
- REGISTRY_PROXY_REMOTEURL=http://registry-1.docker.io
networks:
- appnet
secrets:
- registry-cert
- registry-key
registry-1:
deploy:
placement:
constraints: [node.labels.com.sigyl.git-stack == yes]
replicas: 1
restart_policy:
condition: any
image: registry:2
volumes:
- registry-data:/var/lib/registry
environment:
- REGISTRY_HTTP_ADDR=0.0.0.0:5000
networks:
- appnet
- externalnet
volumes:
letsencrypt-git:
letsencrypt-drone:
registry-data:
registry-cache-data:
networks:
appnet:
driver: overlay
#external: true
externalnet:
driver: overlay
external: true
secrets:
'registry-cert':
file: .certificates/registry.crt
'registry-key':
file: .certificates/registry.key