docker-compose-tls-udp.yaml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. #version: '3.2'
  2. services:
  3. portainer:
  4. container_name: portainer
  5. image: portainer/portainer-ce
  6. volumes:
  7. - /var/run/docker.sock:/var/run/docker.sock
  8. - portainer-data:/data
  9. restart: unless-stopped
  10. labels:
  11. - traefik.enable=true
  12. - traefik.http.routers.portainer.rule=Host(`${PORTAINER_VIRTUAL_HOST}`) || Host(`www.${PORTAINER_VIRTUAL_HOST}`)
  13. - traefik.http.services.portainer.loadbalancer.server.port=9000
  14. postgres:
  15. container_name: postgres
  16. image: postgres:16.3
  17. volumes:
  18. - postgres-data:/var/lib/postgresql/data
  19. - ./default/postgres:/docker-entrypoint-initdb.d
  20. environment:
  21. POSTGRES_USER: ${POSTGRES_USER}
  22. POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
  23. POSTGRES_DB: ${POSTGRES_DB}
  24. PGDATA: /var/lib/postgresql/data/db-files/
  25. POSTGRES_MULTIPLE_DATABASES: ${WIKI_DB_NAME},${MATTERMOST_DB_NAME}
  26. POSTGRES_INITDB_ARGS: --encoding=UTF-8 --lc-collate=C --lc-ctype=C
  27. NETWORK_ACCESS: internal
  28. restart: unless-stopped
  29. healthcheck:
  30. test: ["CMD-SHELL", "pg_isready -U '${POSTGRES_USER}' -d '${POSTGRES_DB}'"]
  31. interval: 5s
  32. timeout: 5s
  33. retries: 5
  34. pgadmin:
  35. container_name: pgadmin
  36. image: dpage/pgadmin4:8.8
  37. environment:
  38. PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
  39. PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
  40. labels:
  41. - traefik.enable=true
  42. - traefik.http.routers.pgadmin.rule=Host(`${PGADMIN_VIRTUAL_HOST}`) || Host(`www.${PGADMIN_VIRTUAL_HOST}`)
  43. - traefik.http.services.pgadmin.loadbalancer.server.port=80
  44. volumes:
  45. - pgadmin-data:/var/lib/pgadmin
  46. - ./default/pgadmin/servers.json:/pgadmin4/servers.json # preconfigured servers/connections
  47. restart: unless-stopped
  48. wiki:
  49. container_name: wiki
  50. image: requarks/wiki:2.5
  51. environment:
  52. DB_TYPE: postgres
  53. DB_HOST: postgres
  54. DB_PORT: 5432
  55. DB_USER: ${POSTGRES_USER}
  56. DB_PASS: ${POSTGRES_PASSWORD}
  57. DB_NAME: ${WIKI_DB_NAME}
  58. labels:
  59. - traefik.enable=true
  60. - traefik.http.routers.wiki.rule=Host(`${WIKI_VIRTUAL_HOST}`) || Host(`www.${WIKI_VIRTUAL_HOST}`)
  61. - traefik.http.services.wiki.loadbalancer.server.port=3000
  62. restart: unless-stopped
  63. depends_on:
  64. postgres:
  65. condition: service_healthy
  66. artifactshub:
  67. container_name: artifactshub
  68. image: sonatype/nexus3
  69. restart: unless-stopped
  70. volumes:
  71. - nexus-data:/nexus-data
  72. labels:
  73. - traefik.enable=true
  74. - traefik.http.routers.artifactshub.rule=Host(`${ARTIFACTSHUB_VIRTUAL_HOST}`) || Host(`www.${ARTIFACTSHUB_VIRTUAL_HOST}`)
  75. - traefik.http.services.artifactshub.loadbalancer.server.port=8081
  76. jenkins:
  77. container_name: jenkins
  78. image: jenkins/jenkins:lts-jdk17
  79. restart: unless-stopped
  80. volumes:
  81. - jenkins-docker-certs:/certs/client
  82. - jenkins-data:/var/jenkins_home
  83. labels:
  84. - traefik.enable=true
  85. - traefik.http.routers.jenkins.rule=Host(`${JENKINS_VIRTUAL_HOST}`) || Host(`www.${JENKINS_VIRTUAL_HOST}`)
  86. - traefik.http.routers.jenkins.service=jenkins-service
  87. - traefik.http.services.jenkins-service.loadbalancer.server.port=8080
  88. - traefik.tcp.routers.jenkins-agent.rule=HostSNI(`*`)
  89. - traefik.tcp.routers.jenkins-agent.entryPoints=jenkins-agents
  90. - traefik.tcp.routers.jenkins-agent.service=jenkins-agent-service
  91. - traefik.tcp.services.jenkins-agent-service.loadbalancer.server.port=50000
  92. mattermost:
  93. container_name: mattermost
  94. depends_on:
  95. postgres:
  96. condition: service_healthy
  97. image: mattermost/mattermost-team-edition:release-8.1
  98. restart: unless-stopped
  99. ports:
  100. - "8443:8443/tcp"
  101. - "8443:8443/udp"
  102. security_opt:
  103. - no-new-privileges:true
  104. pids_limit: 200
  105. read_only: false
  106. tmpfs:
  107. - /tmp
  108. volumes:
  109. - mattermost-config:/mattermost/config:rw
  110. - mattermost-data:/mattermost/data:rw
  111. - mattermost-logs:/mattermost/logs:rw
  112. - mattermost-plugins:/mattermost/plugins:rw
  113. - mattermost-client-plugins:/mattermost/client/plugins:rw
  114. - mattermost-bleve-indexes:/mattermost/bleve-indexes:rw
  115. environment:
  116. TZ: ${MATTERMOST_TIMEZONE}
  117. MM_SQLSETTINGS_DRIVERNAME: ${MATTERMOST_DB_TYPE}
  118. MM_SQLSETTINGS_DATASOURCE: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${MATTERMOST_DB_NAME}?sslmode=disable&connect_timeout=10
  119. MM_BLEVESETTINGS_INDEXDIR: /mattermost/bleve-indexes
  120. DOMAIN: ${MATTERMOST_HOSTNAME}
  121. MM_SERVICESETTINGS_SITEURL: ${MATTERMOST_URL}
  122. MM_SERVICESETTINGS_FORWARD80TO443: 'false'
  123. MATTERMOST_CONTAINER_READONLY: 'false'
  124. labels:
  125. - "traefik.enable=true"
  126. - "traefik.http.routers.mattermost.rule=Host(`${MATTERMOST_VIRTUAL_HOST}`) || Host(`${MATTERMOST_EXTERNAL_HOST}`)"
  127. - "traefik.http.routers.mattermost.tls=true"
  128. - "traefik.http.routers.mattermost.tls.certresolver=mymattermost"
  129. - "traefik.http.routers.mattermost.tls.domains[0].main=${MATTERMOST_EXTERNAL_HOST}"
  130. #- "traefik.http.routers.mattermost.tls.domains[1].sans=${MATTERMOST_VIRTUAL_HOST}"
  131. - "traefik.http.services.mattermost.loadbalancer.server.port=8065"
  132. reverse-proxy:
  133. container_name: reverse-proxy
  134. # The official v3 Traefik docker image
  135. image: traefik:v3.0
  136. command:
  137. - "--accesslog=true"
  138. - "--accesslog.filePath=/var/log/traefik/access.log"
  139. - "--log=true"
  140. - "--log.filePath=/var/log/traefik/traefik.log"
  141. - "--log.level=info"
  142. - "--api.insecure=true"
  143. - "--providers.docker"
  144. # spcificare i due entrypoints per la porta 80 e per la 443 (con ssl)
  145. - "--entryPoints.web.address=:80"
  146. - "--entryPoints.websecure.address=:443"
  147. - "--entryPoints.jenkins-agents.address=:50000"
  148. - "--certificatesresolvers.mymattermost.acme.httpchallenge=true"
  149. - "--certificatesresolvers.mymattermost.acme.httpchallenge.entrypoint=web"
  150. #- "--certificatesresolvers.mymattermost.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
  151. - "--certificatesresolvers.mymattermost.acme.email=progettoemed@gmail.com"
  152. #- "--certificatesresolvers.mymattermost.acme.storage=/etc/letsencrypt/acme.json"
  153. restart: unless-stopped
  154. ports:
  155. # The HTTP port
  156. - "80:80"
  157. # The HTTPS port
  158. - "443:443"
  159. # The Web UI (enabled by --api.insecure=true)
  160. - "8080:8080"
  161. # The jenkins agents port
  162. - "50000:50000"
  163. volumes:
  164. # So that Traefik can listen to the Docker events
  165. - /var/run/docker.sock:/var/run/docker.sock
  166. # posizione standard dei file letsencrypt
  167. - /etc/letsencrypt:/etc/letsencrypt
  168. # posizione log traefik (default to console)
  169. - /var/log/traefik:/var/log/traefik
  170. # posizione file di configurazione per il log
  171. #- ./traefik.yml:/etc/traefik/traefik.yml
  172. networks:
  173. dev_network:
  174. volumes:
  175. portainer-data:
  176. postgres-data:
  177. pgadmin-data:
  178. nexus-data:
  179. jenkins-docker-certs:
  180. jenkins-data:
  181. synapse-matrix-data:
  182. mattermost-config:
  183. mattermost-data:
  184. mattermost-logs:
  185. mattermost-plugins:
  186. mattermost-client-plugins:
  187. mattermost-bleve-indexes: