-
Notifications
You must be signed in to change notification settings - Fork 6
/
docker-compose.yml
128 lines (127 loc) · 4.33 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
version: '3'
services:
traefik:
image: "traefik:v2.3.3"
container_name: "traefik"
command:
- "--log.level=DEBUG"
- "--api.dashboard=true"
- "--api.insecure=true" # To secure the api comment this out.
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.ssh-gitlab.address=:2224"
restart: unless-stopped
stop_grace_period: 30s
networks:
default:
aliases:
- "jenkins.local.net"
- "sonarqube.local.net"
- "gitlab.local.net"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.rule=Host(`${TRAEFIK_SERVER_NAME}`)"
- "traefik.http.routers.dashboard.service=api@internal"
# Uncomment below to secure the Dashboard with user: admin and password: password
#- "traefik.http.routers.dashboard.middlewares=auth"
#- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$fYN6zOqK$$OX.AGKf1T/z4UcqfKSsg4."
ports:
- "80:80"
- "2224:2224"
jenkins.local.net:
build: jenkins
container_name: jenkins
image: jenkins-lts:2.249.3
labels:
- "traefik.enable=true"
- "traefik.http.routers.router1.rule=Host(`$JENKINS_SERVER_NAME`)"
- "traefik.http.routers.router1.entrypoints=web"
- "traefik.http.routers.router1.service=jenkins"
- "traefik.http.services.jenkins.loadbalancer.server.port=8083"
environment:
- JENKINS_SLAVE_AGENT_PORT=50000
- JENKINS_OPTS="--httpPort=8083"
- JENKINS_ADMIN_USER=$JENKINS_ADMIN_USER
- JENKINS_ADMIN_PASSWORD=$JENKINS_ADMIN_PASSWORD
- GITLAB_ROOT_PASSWORD=$GITLAB_ROOT_PASSWORD
- CASC_JENKINS_CONFIG=$CASC_JENKINS_CONFIG
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- jenkins_data:/var/jenkins_home
sonarqube.local.net:
build: sonarqube
container_name: sonarqube
image: sonarqube-community:8.5.1
labels:
- "traefik.enable=true"
- "traefik.http.routers.router2.rule=Host(`$SONARQUBE_SERVER_NAME`)"
- "traefik.http.routers.router2.entrypoints=web"
- "traefik.http.routers.router2.service=sonarqube"
- "traefik.http.services.sonarqube.loadbalancer.server.port=9000"
environment:
- SONARQUBE_USER_NAME=$SONARQUBE_USER_NAME
- SONARQUBE_USER_GROUP=$SONARQUBE_USER_GROUP
- SONARQUBE_JDBC_URL=jdbc:postgresql://sonar-postgres/sonar
- SONARQUBE_JDBC_USERNAME=$SONARQUBE_DB_USER
- SONARQUBE_JDBC_PASSWORD=$SONARQUBE_DB_PASSWORD
volumes:
- sonar_data:/opt/sonarqube/data
- sonar_logs:/opt/sonarqube/logs
depends_on:
- sonar-postgres
sonar-postgres:
image: postgres:11.10-alpine
container_name: pg_sonarqube
ports:
- $SONARQUBE_DB_PORT:5432
networks:
default:
aliases:
- "sonarqube.local.net"
environment:
- POSTGRES_DB=$SONARQUBE_DB
- POSTGRES_USER=$SONARQUBE_DB_USER
- POSTGRES_PASSWORD=$SONARQUBE_DB_PASSWORD
volumes:
- sonar_db_volume:/var/lib/postgresql/data
restart: unless-stopped
ulimits:
nproc: 65535
nofile:
soft: 32000
hard: 40000
gitlab.local.net:
container_name: gitlab
image: 'gitlab/gitlab-ee:13.5.3-ee.0'
labels:
- "traefik.enable=true"
- "traefik.http.routers.router3.rule=Host(`$GITLAB_SERVER_NAME`)"
- "traefik.http.routers.router3.entrypoints=web"
- "traefik.http.routers.router3.service=gitlab"
- "traefik.http.services.gitlab.loadbalancer.server.port=80"
# SSH
- "traefik.tcp.routers.router4.rule=HostSNI(`*`)"
- "traefik.tcp.routers.router4.entrypoints=ssh-gitlab"
- "traefik.tcp.routers.router4.service=ssh"
- "traefik.tcp.services.ssh.loadbalancer.server.port=22"
restart: unless-stopped
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url "${GITLAB_SERVER_FQDN}"
gitlab_rails['initial_root_password'] = "${GITLAB_ROOT_PASSWORD}"
gitlab_rails['gitlab_shell_ssh_port'] = 2224
volumes:
- gitlab_config:/etc/gitlab
- gitlab_logs:/var/log/gitlab
- gitlab_data:/var/opt/gitlab
volumes:
jenkins_data: {}
sonar_data: {}
sonar_logs: {}
sonar_db_volume: {}
gitlab_config: {}
gitlab_logs: {}
gitlab_data: {}