| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- version: '3.8'
- services:
- keycloak:
- image: quay.io/keycloak/keycloak:24.0.1
- container_name: keycloak
- ports:
- - "8085:8080"
- environment:
- KEYCLOAK_ADMIN: admin
- KEYCLOAK_ADMIN_PASSWORD: admin
- command:
- - start-dev
- # labels:
- # - "traefik.enable=true"
- # - "traefik.http.routers.keycloak.rule=Host(`auth.mondomaine.com`)"
- # - "traefik.http.routers.keycloak.entrypoints=web"
- # - "traefik.http.services.keycloak.loadbalancer.server.port=8080"
- restart: unless-stopped
- app_transport_front:
- build:
- context: ./app_transport_front
- dockerfile: Dockerfile
- container_name: vue_frontend
- volumes:
- - ./app_transport_front:/app
- ports:
- - "5174:5173"
- environment:
- - VITE_API_URL=http://localhost:5173
- networks:
- - gogs-network
- # labels:
- # - "traefik.enable=true"
- # - "traefik.http.routers.vue_frontend.rule=Host(`vue_frontend.localhost`)"
- # - "traefik.http.services.vue_frontend.loadbalancer.server.port=5173"
- # - "traefik.http.routers.vue_frontend.entrypoints=web"
- notification_service:
- build:
- context: ./notification_service
- dockerfile: Dockerfile
- container_name: notification_service
- ports:
- - "4000:4000"
- networks:
- - gogs-network
- environment:
- - REDIS_HOST=redis
- - SMTP_HOST=smtp.exemple.com
- - SMTP_USER=ton_email
- - SMTP_PASS=mot_de_passe
- - SMS_API_KEY=ta_clé_api_sms
-
- redis:
- image: redis:7
- container_name: redis_cache
- ports:
- - "6379:6379"
- networks:
- - gogs-network
- n8n:
- image: docker.n8n.io/n8nio/n8n
- restart: always
- ports:
- - "127.0.0.1:5678:5678"
- # labels:
- # - traefik.enable=true
- # - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- # - traefik.http.routers.n8n.tls=true
- # - traefik.http.routers.n8n.entrypoints=web,websecure
- # - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- # - traefik.http.middlewares.n8n.headers.SSLRedirect=true
- # - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- # - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- # - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- # - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- # - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- # - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- # - traefik.http.middlewares.n8n.headers.STSPreload=true
- # - traefik.http.routers.n8n.middlewares=n8n@docker
- environment:
- - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- - N8N_PORT=5678
- - N8N_PROTOCOL=https
- - NODE_ENV=production
- - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- volumes:
- - n8n_data:/home/node/.n8n
- - ./local-files:/files
- # traefik:
- # image: traefik:v2.10
- # container_name: traefik
- # restart: always
- # command:
- # - "--api.dashboard=true"
- # - "--api.insecure=true"
- # - "--providers.docker=true"
- # - "--entrypoints.web.address=:80"
- # - "--entrypoints.websecure.address=:443"
- # - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
- # - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
- # - "--certificatesresolvers.myresolver.acme.email=brin.amonkonan@gmail.com"
- # - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
- # - "--log.level=DEBUG"
- # labels:
- # - com.host.description=label
- # # Router pour accéder au dashboard via traefik.localhost
- # - "traefik.enable=true"
- # - "traefik.http.routers.traefik.rule=Host(`localhost`)"
- # - "traefik.http.routers.traefik.entrypoints=web"
- # - "traefik.http.routers.traefik-secure.entrypoints=websecure"
- # - "traefik.http.routers.traefik.service=api@internal" # Utilise le service interne de Traefik
- # - "traefik.http.routers.traefik.middlewares=dashboard-auth" # (Optionnel) protection du dashboard
- # - "traefik.http.routers.traefik-secure.tls=true"
- # # Middleware pour protéger le dashboard avec une authentification basique (user: admin, mdp: admin)
- # #- "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
- # ports:
- # - "80:80"
- # - "443:443"
- # volumes:
- # - "/var/run/docker.sock:/var/run/docker.sock:ro"
- # - "./letsencrypt:/letsencrypt"
- # networks:
- # - gogs-network
- # whoami:
- # image: traefik/whoami
- # labels:
- # - "traefik.enable=true"
- # - "traefik.http.routers.whoami.rule=Host(`localhost`)"
- # - "traefik.http.routers.whoami.entrypoints=web"
- # - "traefik.http.services.whoami.loadbalancer.server.port=80"
- # networks:
- # - gogs-network
- mysql:
- image: mysql:5.7
- container_name: mysql
- restart: always
- environment:
- MYSQL_ROOT_PASSWORD: rootpassword
- MYSQL_DATABASE: transport
- MYSQL_USER: user
- MYSQL_PASSWORD: userpassword
- ports:
- - "3306:3306"
- volumes:
- - mysql-data:/var/lib/mysql
- - ./mysql-init:/docker-entrypoint-initdb.d:ro
- networks:
- - gogs-network
- healthcheck:
- test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
- interval: 10s
- retries: 5
- start_period: 30s
- phpmyadmin:
- image: phpmyadmin/phpmyadmin
- container_name: phpmyadmin
- restart: always
- environment:
- PMA_HOST: mysql
- PMA_PORT: 3306
- ports:
- - "8083:80"
- networks:
- - gogs-network
- # labels:
- # - "traefik.enable=true"
- # - "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.localhost`)"
- # - "traefik.http.services.phpmyadmin.loadbalancer.server.port=80"
- # - "traefik.http.routers.phpmyadmin.entrypoints=web"
- node_app:
- build:
- context: ./node_app # Le dossier contenant le Dockerfile
- dockerfile: Dockerfile
- #restart: always
- container_name: node_app
- working_dir: /usr/src/app
- depends_on:
- mysql:
- condition: service_healthy
- environment:
- DATABASE_URL: mysql://user:userpassword@mysql:3306/transport?connectTimeout=30000
- NODE_ENV: development
- ports:
- - "3001:3000"
- volumes:
- - ./node_app:/usr/src/app
- - /usr/src/app/node_modules
- command: ["npm", "run", "start"]
- networks:
- - gogs-network
- # labels:
- # - "traefik.enable=true"
- # - "traefik.http.routers.node_app.rule=Host(`api.localhost`)"
- # - "traefik.http.services.node_app.loadbalancer.server.port=3000"
- # - "traefik.http.routers.node_app.entrypoints=web"
- sonarqube:
- image: sonarqube:lts
- container_name: sonarqube
- restart: always
- depends_on:
- sonarqube_db:
- condition: service_healthy
- environment:
- - SONAR_JDBC_URL=jdbc:postgresql://sonarqube_db:5432/sonarqube
- - SONAR_JDBC_USERNAME=sonar
- - SONAR_JDBC_PASSWORD=sonarpassword
- ports:
- - "9000:9000"
- volumes:
- - sonarqube_data:/opt/sonarqube/data
- - sonarqube_extensions:/opt/sonarqube/extensions
- - sonarqube_logs:/opt/sonarqube/logs
- networks:
- - sonarnet
- # labels:
- # - "traefik.enable=true"
- # - "traefik.http.routers.sonarqube.rule=Host(`sonarqube.localhost`)"
- # - "traefik.http.services.sonarqube.loadbalancer.server.port=9000"
- # - "traefik.http.routers.sonarqube.entrypoints=web"
- sonarqube_db:
- image: postgres:13
- container_name: sonarqube_db
- restart: always
- environment:
- POSTGRES_USER: sonar
- POSTGRES_PASSWORD: sonarpassword
- POSTGRES_DB: sonarqube
- ports:
- - "5432:5432"
- volumes:
- - postgresql-data:/var/lib/postgresql/data
- - ./postgres-init.sql:/docker-entrypoint-initdb.d/init.sql
- networks:
- - sonarnet
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U sonar"]
- interval: 10s
- retries: 5
- start_period: 30s
- pgadmin:
- image: dpage/pgadmin4
- container_name: pgadmin
- restart: always
- environment:
- PGADMIN_DEFAULT_EMAIL: admin@admin.com
- PGADMIN_DEFAULT_PASSWORD: adminpassword
- ports:
- - "8084:80"
- networks:
- - gogs-network
- # labels:
- # - "traefik.enable=true"
- # - "traefik.http.routers.pgadmin.rule=Host(`pgadmin.localhost`)"
- # - "traefik.http.services.pgadmin.loadbalancer.server.port=80"
- # - "traefik.http.routers.pgadmin.entrypoints=web"
- gogs:
- image: gogs/gogs:0.12.10
- container_name: gogs_server
- restart: always
- ports:
- - "3000:3000"
- - "10022:22"
- depends_on:
- mysql:
- condition: service_healthy
- sonarqube_db:
- condition: service_healthy
- volumes:
- - gogs_data:/data
- networks:
- - gogs-network
- - sonarnet
- # labels:
- # - com.host.description=label
- # - "traefik.enable=true"
- # - "traefik.http.routers.gogs.rule=Host(`gogs.localhost`)"
- # - "traefik.http.services.gogs.loadbalancer.server.port=3000"
- # - "traefik.http.routers.gogs.entrypoints=web"
- prometheus:
- image: prom/prometheus:v2.46.0
- container_name: prometheus_server
- volumes:
- - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ports:
- - "9090:9090"
- networks:
- - monitoring
- # labels:
- # - com.host.description=label
- # - "traefik.enable=true"
- # - "traefik.http.routers.prometheus.rule=Host(`prometheus.example.com`)"
- # - "traefik.http.services.prometheus.loadbalancer.server.port=9090"
- # - "traefik.http.routers.prometheus.entrypoints=web"
- grafana:
- image: grafana/grafana:10.1.1
- container_name: grafana_server
- environment:
- - GF_SECURITY_ADMIN_USER=admin
- - GF_SECURITY_ADMIN_PASSWORD=admin
- ports:
- - "3003:3000"
- depends_on:
- - prometheus
- volumes:
- - grafana_data:/var/lib/grafana
- networks:
- - monitoring
- node-exporter:
- image: prom/node-exporter:latest
- container_name: node_exporter
- ports:
- - "9100:9100"
- networks:
- - monitoring
- jenkins:
- image: jenkins/jenkins:lts
- container_name: jenkins_server
- user: root
- ports:
- - "8081:8080"
- - "50000:50000"
- volumes:
- - jenkins_home:/var/jenkins_home
- - /var/run/docker.sock:/var/run/docker.sock
- networks:
- - gogs-network
- networks:
- monitoring:
- driver: bridge
- gogs-network:
- driver: bridge
- sonarnet:
- driver: bridge
- volumes:
- mysql-data:
- postgresql-data:
- grafana_data:
- jenkins_home:
- gogs_data:
- sonarqube_data:
- sonarqube_extensions:
- sonarqube_logs:
- n8n_data:
|