111 lines
2.8 KiB
YAML
111 lines
2.8 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:v2.11.28
|
|
command:
|
|
- "--api.insecure=true"
|
|
- "--api.dashboard=true"
|
|
- "--providers.docker=true"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
- "--entrypoints.web.address=:80" # container internal port
|
|
ports:
|
|
- "8085:80" # host port changed to 8085
|
|
- "8090:8080" # Traefik dashboard
|
|
volumes:
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
networks:
|
|
- billing-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -f http://127.0.0.1:8080/api/overview || exit 1"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
flask-app:
|
|
build: .
|
|
ports:
|
|
- "5003:5002" # internal container port
|
|
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
openldap:
|
|
condition: service_healthy
|
|
environment:
|
|
FLASK_APP: run:app
|
|
FLASK_ENV: development
|
|
FLASK_RUN_HOST: 0.0.0.0
|
|
FLASK_RUN_PORT: 5002
|
|
MYSQL_HOST: mysql
|
|
MYSQL_PORT: 3306
|
|
MYSQL_USER: root
|
|
MYSQL_PASSWORD: admin
|
|
MYSQL_DB: excel_data7
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.client-billing-flask.rule=Host(`flask.lcepl.local`)"
|
|
- "traefik.http.routers.client-billing-flask.entrypoints=web"
|
|
- "traefik.http.services.client-billing-flask.loadbalancer.server.port=5002"
|
|
networks:
|
|
- billing-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:5002/"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 20s
|
|
|
|
mysql:
|
|
image: mysql:8.0
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: admin
|
|
MYSQL_DATABASE: excel_data7
|
|
ports:
|
|
- "3307:3306" # external access if needed
|
|
volumes:
|
|
- mysql-data:/var/lib/mysql
|
|
networks:
|
|
- billing-network
|
|
restart: always
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -padmin --silent"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 20s
|
|
|
|
openldap:
|
|
image: osixia/openldap:1.5.0
|
|
environment:
|
|
LDAP_ORGANISATION: "LCEPL"
|
|
LDAP_DOMAIN: "lcepl.org"
|
|
LDAP_ADMIN_PASSWORD: admin
|
|
ports:
|
|
- "1389:389" # optional external access
|
|
- "1636:636"
|
|
volumes:
|
|
- openldap-data:/var/lib/ldap
|
|
- openldap-config:/etc/ldap/slapd.d
|
|
- ./ldifs:/container/service/slapd/assets/bootstrap/ldifs:rw
|
|
networks:
|
|
- billing-network
|
|
restart: always
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "ldapsearch -x -H ldap://127.0.0.1:389 -D 'cn=admin,dc=lcepl,dc=org' -w admin -b 'dc=lcepl,dc=org' >/dev/null 2>&1 || exit 1"]
|
|
interval: 20s
|
|
timeout: 10s
|
|
retries: 20
|
|
start_period: 60s
|
|
|
|
volumes:
|
|
mysql-data:
|
|
openldap-data:
|
|
openldap-config:
|
|
|
|
networks:
|
|
billing-network:
|
|
driver: bridge
|