-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
155 lines (146 loc) · 4.45 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
version: '3.8'
volumes:
vol_portainer:
vol_gateway_certs:
networks:
net_traefik:
driver: bridge
services:
traefik:
image: danielporto/pluribus:traefik_v2.6.1
build:
context: ./traefik
dockerfile: Dockerfile
args:
TRAEFIK_BASE: "v2.6.1"
restart: unless-stopped
container_name: traefik
networks:
- net_traefik
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- vol_gateway_certs:/certs
security_opt:
- no-new-privileges=true # https://docs.docker.com/engine/reference/run/#security-configuration
env_file:
- ./env
environment:
- TRAEFIK_SWARM_MODE=false
#----------------------------------------------------------------------------------
# monitor service
#----------------------------------------------------------------------------------
agent:
image: portainer/agent:2.15.0-alpine
container_name: tasks.agent
environment:
AGENT_CLUSTER_ADDR: tasks.agent
AGENT_PORT: 40091
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
networks:
- net_traefik
env_file:
- ./env
# docker run --rm httpd:2.4-alpine htpasswd -nbB admin 'password' | cut -d ":" -f 2
portainer:
image: portainer/portainer-ce:2.15.0-alpine
command: -H tcp://tasks.agent:40091 --tlsskipverify --admin-password='$$2y$$05$$RHexFs6Yw8763FQvtrv6dOw9z.TLdfp7myCBfDW6iu/iYipAqnM62'
restart: on-failure
volumes:
- vol_portainer:/data
env_file:
- ./env
container_name: portainer
networks:
- net_traefik
ports:
- 9090:9000
labels:
- traefik.enable=true
- traefik.docker.network=net_traefik # required when container connects to more than one network
- traefik.http.services.to-portainer.loadbalancer.server.port=9000
- traefik.http.routers.to-portainer.rule=Host(`portainer.pluribus.vcap.me`)
# - traefik.http.routers.to-portainer.tls=true
# - traefik.http.routers.to-portainer.entrypoints=websecure
- traefik.http.routers.to-portainer.entrypoints=web
#
# Spark
#
spark-master:
image: bde2020/spark-master:3.3.0-hadoop3.3
container_name: spark-master
networks:
net_traefik:
aliases:
- spark-master
ports:
- 8080:8080
- 7077:7077
env_file:
- ./env
environment:
- SPARK_MASTER=spark://spark-master:7077
volumes:
- ./data:/gfs/data
- ./:/localdata
labels:
- traefik.enable=true
- traefik.docker.network=net_traefik # required when container connects to more than one network
- traefik.http.services.to-spark.loadbalancer.server.port=8080
- traefik.http.routers.to-spark.rule=Host(`spark.pluribus.vcap.me`)
# - traefik.http.routers.to-spark.tls=true
# - traefik.http.routers.to-spark.entrypoints=websecure
- traefik.http.routers.to-spark.entrypoints=web
spark-worker:
image: bde2020/spark-worker:3.3.0-hadoop3.3
container_name: spark-worker
depends_on:
- spark-master
# do not use aliases here. replication will make a mess with the server communication
networks:
net_traefik:
# ports:
# - 8081:8081
restart: on-failure
volumes:
- ./data:/gfs/data
- ./:/localdata
env_file:
- ./env
environment:
- SPARK_MASTER=spark://spark-master:7077
- SERVICE_PRECONDITION=spark-master:7077
jupyter:
image: jupyter/pyspark-notebook:spark-3.3.0
container_name: jupyter
networks:
net_traefik:
aliases:
- jupyter
restart: on-failure
ports:
- 10000:8888
- 4040:4040
- 4041:4041
- 4042:4042
volumes:
- .:/home/jovyan/work
- ./data:/gfs/data
environment:
- SPARK_MASTER=spark://spark-master:7077
env_file:
- ./env
command: "start-notebook.sh --NotebookApp.token='' --NotebookApp.password=''"
labels:
- traefik.enable=true
- traefik.docker.network=net_traefik # required when container connects to more than one network
- traefik.http.services.to-jupyter.loadbalancer.server.port=8888
- traefik.http.routers.to-jupyter.rule=Host(`jupyter.pluribus.vcap.me`)
# - traefik.http.routers.to-jupyter.tls=true
# - traefik.http.routers.to-jupyter.entrypoints=websecure
- traefik.http.routers.to-jupyter.entrypoints=web