-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
166 lines (154 loc) · 5.29 KB
/
docker-compose.yml
File metadata and controls
166 lines (154 loc) · 5.29 KB
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
156
157
158
159
160
161
162
163
164
165
166
version: "3.8"
services:
jobmanager:
image: flink:1.18.1-scala_2.12
hostname: jobmanager
container_name: flink-jobmanager
ports:
- "8081:8081" # Interface utilisateur web de Flink
- "9000:9000" # Port d'écoute pour le stream de données (pour le job de streaming)
command: jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
jobmanager.memory.process.size: 1600m
taskmanager.numberOfTaskSlots: 1
taskmanager.slot.timeout: 300000
networks:
- flink-net
volumes: # <-- AJOUTEZ CETTE SECTION
- ./flink-job:/flink-job
- ./postgresql-42.7.5.jar:/opt/flink/lib/postgresql-42.7.5.jar
- ./flink-connector-jdbc_2.12-3.2.0-1.18.jar:/opt/flink/lib/flink-connector-jdbc.jar
- ./data:/data
taskmanager:
image: flink:1.18.1-scala_2.12
container_name: flink-taskmanager-1
command: taskmanager
depends_on:
- jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 1
taskmanager.memory.process.size: 1728m
taskmanager.slot.timeout: 300000
networks:
- flink-net
volumes:
- ./flink-job:/flink-job
- ./postgresql-42.7.5.jar:/opt/flink/lib/postgresql-42.7.5.jar
- ./flink-connector-jdbc_2.12-3.2.0-1.18.jar:/opt/flink/lib/flink-connector-jdbc.jar
- ./data:/data
taskmanager-2:
image: flink:1.18.1-scala_2.12
container_name: flink-taskmanager-2
command: taskmanager
depends_on:
- jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 1
taskmanager.memory.process.size: 1728m
taskmanager.slot.timeout: 300000
networks:
- flink-net
volumes:
- ./flink-job:/flink-job
- ./postgresql-42.7.5.jar:/opt/flink/lib/postgresql-42.7.5.jar
- ./flink-connector-jdbc_2.12-3.2.0-1.18.jar:/opt/flink/lib/flink-connector-jdbc.jar
- ./data:/data
taskmanager-3:
image: flink:1.18.1-scala_2.12
container_name: flink-taskmanager-3
command: taskmanager
depends_on:
- jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 1
taskmanager.memory.process.size: 1728m
taskmanager.slot.timeout: 300000
networks:
- flink-net
volumes:
- ./flink-job:/flink-job
- ./postgresql-42.7.5.jar:/opt/flink/lib/postgresql-42.7.5.jar
- ./flink-connector-jdbc_2.12-3.2.0-1.18.jar:/opt/flink/lib/flink-connector-jdbc.jar
- ./data:/data
# Service pour le client PyFlink (utilisé pour soumettre les jobs streaming et batch)
client-pyflink:
build:
context: .
dockerfile: Dockerfile.client # Utilise le Dockerfile pour le client PyFlink
hostname: client-pyflink
container_name: flink-client-pyflink
depends_on:
- jobmanager
- postgres
- data-generator-batch # Dépend du générateur batch pour s'assurer que le fichier est prêt
command: tail -f /dev/null # Keep container running
volumes:
- ./flink-job:/flink-job # Montage du répertoire des jobs Flink Python
- ./data:/data # Montage du répertoire des données pour que Flink puisse lire le CSV batch
# Monte le JAR JDBC directement dans le répertoire lib de Flink pour qu'il soit accessible
networks:
- flink-net
postgres:
image: postgres:15
hostname: postgres
container_name: flink-postgres
environment:
POSTGRES_DB: flink_db
POSTGRES_USER: flink_user
POSTGRES_PASSWORD: flink_password
ports:
- "5435:5432" # Changed from 5434 to 5435
volumes:
- pgdata:/var/lib/postgresql/data # Volume persistant pour les données
networks:
- flink-net
# Service pour le générateur de données en streaming
data-generator-stream:
build:
context: .
dockerfile: Dockerfile.generator
container_name: data-generator-stream
depends_on:
- jobmanager # Le générateur dépend du JobManager pour envoyer les données
environment:
FLINK_HOST: jobmanager
FLINK_PORT: 9000
MODE: stream # Indique au script de générer en streaming
volumes:
- ./data:/app/data # Monte le répertoire 'data' dans le conteneur du générateur
- ./simulate_factory_data.py:/app/simulate_factory_data.py # Monte le script Python
networks:
- flink-net
# Service pour le générateur de données en batch (s'exécute une fois et s'arrête)
data-generator-batch:
build:
context: .
dockerfile: Dockerfile.generator
container_name: data-generator-batch
depends_on:
- jobmanager # Dépend du JobManager pour s'assurer qu'il est démarré
environment:
MODE: batch # Indique au script de générer un fichier batch
command: python simulate_factory_data.py # Exécute le script Python une fois et s'arrête
volumes:
- ./data:/app/data # Monte le répertoire 'data' dans le conteneur du générateur
- ./simulate_factory_data.py:/app/simulate_factory_data.py # Monte le script Python
networks:
- flink-net
volumes:
pgdata: # Définition du volume persistant
networks:
flink-net:
driver: bridge