Skip to content

Instantly share code, notes, and snippets.

@mazz
Created January 26, 2020 00:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mazz/622d89129189d7c19106749f0b1a2091 to your computer and use it in GitHub Desktop.
Save mazz/622d89129189d7c19106749f0b1a2091 to your computer and use it in GitHub Desktop.
version: '3.7'
services:
proxy:
image: traefik:v1.7
ports:
- 80:80
- 443:443
networks:
- proxy-network
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- proxy-certificates-storage:/certificates
command: >
--docker
--docker.watch
--docker.exposedbydefault=false
--constraints=tag==proxy-public
--entrypoints='Name:http Address::80'
--entrypoints='Name:https Address::443 TLS'
--acme
--acme.email=${EMAIL?Variable EMAIL not set}
--acme.storage="certificates/acme.json"
--acme.entryPoint=https
--acme.httpChallenge.entryPoint=http
--acme.onhostrule=true
--acme.acmelogging=true
--logLevel=INFO
--accessLog
--api
labels:
- traefik.frontend.rule=Host:proxy.${DOMAIN?Variable DOMAIN not set}
- traefik.enable=true
- traefik.port=8080
- traefik.tags=proxy-public
- traefik.docker.network=proxy-network
# Traefik service that listens to HTTP
- traefik.redirectorservice.frontend.entryPoints=http
- traefik.redirectorservice.frontend.redirect.entryPoint=https
# Traefik service that listens to HTTPS
- traefik.webservice.frontend.entryPoints=https
- traefik.frontend.auth.basic.users=${TKUSERNAME?Variable TKUSERNAME not set}:${HASHED_PASSWORD?Variable HASHED_PASSWORD not set}
prometheus:
image: prom/prometheus:v2.11.2
ports:
- '9090:9090'
volumes:
- ./docker/prometheus/:/etc/prometheus/
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/config.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
grafana:
image: grafana/grafana:6.3.3
depends_on:
- prometheus
- proxy
ports:
- '3000:3000'
volumes:
- grafana-data:/var/lib/grafana
- ./docker/grafana/:/etc/grafana/provisioning/
env_file:
- ./docker/grafana/.env
networks:
- proxy-network
labels:
- traefik.webservice.frontend.entryPoints=https
- traefik.port=3000
- traefik.enable=true
- traefik.backend=grafana
- traefik.passHostHeader=true
- traefik.docker.network=proxy-network
- traefik.frontend.rule=Host:grafana.${DOMAIN?Variable DOMAIN not set}
postgres:
image: postgres:12.1-alpine
environment:
POSTGRES_DB: ${FW_DATABASE_NAME?Variable FW_DATABASE_NAME not set}
POSTGRES_PASSWORD: ${FW_DATABASE_PASSWORD?Variable FW_DATABASE_PASSWORD not set}
POSTGRES_USER: ${FW_DATABASE_USERNAME?Variable FW_DATABASE_USERNAME not set}
networks:
- db-network
volumes:
- database-storage:/var/lib/postgresql/data
faithful_word_umbrella:
restart: on-failure
build: .
image: faithful_word_umbrella
ports:
- '4000:4000'
env_file:
- .faithful_word_umbrella_env
depends_on:
- proxy
- postgres
networks:
- db-network
- proxy-network
labels:
- traefik.frontend.rule=Host:${DOMAIN?Variable DOMAIN not set}
- traefik.enable=true
- traefik.port=4000
- traefik.tags=proxy-public
- traefik.docker.network=proxy-network
# Traefik service that listens to HTTP
- traefik.redirectorservice.frontend.entryPoints=http
- traefik.redirectorservice.frontend.redirect.entryPoint=https
# Traefik service that listens to HTTPS
- traefik.webservice.frontend.entryPoints=https
postgres_exporter:
image: wrouesnel/postgres_exporter:v0.5.1
ports:
- '9187:9187'
depends_on:
- postgres
environment:
DATA_SOURCE_USER: ${FW_DATABASE_USERNAME?Variable FW_DATABASE_USERNAME not set}
DATA_SOURCE_PASS: ${FW_DATABASE_PASSWORD?Variable FW_DATABASE_PASSWORD not set}
DATA_SOURCE_URI: ${FW_DATABASE_HOSTNAME?Variable FW_DATABASE_HOSTNAME not set}:5432/?sslmode=disable
networks:
- db-network
networks:
db-network:
proxy-network:
external: true
volumes:
proxy-certificates-storage:
database-storage:
prometheus-data: {}
grafana-data: {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment