@@ -9,15 +9,19 @@ services:
99 - MINIO_ROOT_PASSWORD=${S3_SECRET_ACCESS_KEY}
1010 volumes :
1111 - minio:/data
12+ networks :
13+ - minio
1214 healthcheck :
1315 test : ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
1416 interval : 10s
1517 retries : 5
1618 restart : unless-stopped
1719 command : server /data --console-address ":9001"
1820
19- minio-mc :
21+ minio-init :
2022 image : minio/mc:RELEASE.2025-04-16T18-13-26Z
23+ networks :
24+ - minio
2125 depends_on :
2226 minio :
2327 condition : service_healthy
@@ -34,20 +38,25 @@ services:
3438 - " 11434:11434"
3539 volumes :
3640 - ollama:/root/.ollama
41+ networks :
42+ - ollama
3743 deploy :
3844 resources :
3945 reservations :
4046 devices :
41- - capabilities : [gpu]
42- runtime : nvidia
47+ - driver : nvidia
48+ count : all
49+ capabilities : [gpu]
4350 healthcheck :
4451 test : ["CMD", "ollama", "ls"]
4552 interval : 10s
4653 retries : 3
4754 restart : unless-stopped
4855
49- ollama-models :
56+ ollama-init :
5057 image : alpine/curl:latest
58+ networks :
59+ - ollama
5160 depends_on :
5261 ollama :
5362 condition : service_healthy
@@ -64,6 +73,112 @@ services:
6473 done
6574 '
6675 restart : no
76+
77+ mlflow :
78+ build :
79+ context : ./docker/mlflow
80+ dockerfile : Dockerfile
81+ ports :
82+ - " 5000:5000"
83+ volumes :
84+ - mlflow:/mlflow
85+ networks :
86+ - mlflow
87+ environment :
88+ MLFLOW_S3_ENDPOINT_URL : http://${S3_ENDPOINT}
89+ AWS_ACCESS_KEY_ID : ${S3_ACCESS_KEY_ID}
90+ AWS_SECRET_ACCESS_KEY : ${S3_SECRET_ACCESS_KEY}
91+ AWS_DEFAULT_REGION : ${S3_REGION}
92+ AWS_S3_ADDRESSING_STYLE : ${S3_URL_STYLE}
93+ command : >
94+ mlflow server
95+ --backend-store-uri sqlite:///mlflow/mlflow.db
96+ --serve-artifacts
97+ --artifacts-destination s3://${S3_MLFLOW_BUCKET}/${S3_MLFLOW_ARTIFACTS_PREFIX}
98+ --host 0.0.0.0
99+ --port 5000
100+ healthcheck :
101+ test : >
102+ python -c "import urllib.request;
103+ urllib.request.urlopen('http://localhost:5000')"
104+ interval : 10s
105+ retries : 5
106+ restart : unless-stopped
107+
108+ kafka :
109+ image : apache/kafka:4.0.0
110+ ports :
111+ - " 9092:9092"
112+ environment :
113+ KAFKA_NODE_ID : 1
114+ KAFKA_PROCESS_ROLES : broker,controller
115+
116+ KAFKA_LISTENERS : EXTERNAL://:9092,INTERNAL://:29092,CONTROLLER://:9093
117+ KAFKA_ADVERTISED_LISTENERS : EXTERNAL://localhost:9092,INTERNAL://kafka:29092
118+
119+ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP : CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT
120+ KAFKA_INTER_BROKER_LISTENER_NAME : INTERNAL
121+
122+ KAFKA_CONTROLLER_LISTENER_NAMES : CONTROLLER
123+ KAFKA_CONTROLLER_QUORUM_VOTERS : 1@kafka:9093
124+
125+ KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR : 1
126+ KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR : 1
127+ KAFKA_TRANSACTION_STATE_LOG_MIN_ISR : 1
128+ KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS : 0
129+
130+ KAFKA_LOG_DIRS : /var/lib/kafka/data
131+ volumes :
132+ - kafka:/var/lib/kafka/data
133+ networks :
134+ - kafka
135+ healthcheck :
136+ test : [
137+ " CMD" , "bash", "-c",
138+ " /opt/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --list"
139+ ]
140+ interval : 10s
141+ retries : 5
142+ restart : unless-stopped
143+
144+ kafka-init :
145+ image : apache/kafka:4.0.0
146+ environment :
147+ KAFKA_GROUP_TOPIC_LIST : ${KAFKA_GROUP_TOPIC_LIST}
148+ networks :
149+ - kafka
150+ depends_on :
151+ kafka :
152+ condition : service_healthy
153+ command : |
154+ /bin/bash -c '
155+ for topic_group in $${KAFKA_GROUP_TOPIC_LIST//,/ }; do
156+ IFS=':' read -r topic group <<< "$$topic_group"
157+
158+ echo "Creating topic: $$topic"
159+ /opt/kafka/bin/kafka-topics.sh \
160+ --bootstrap-server kafka:29092 \
161+ --create --if-not-exists --topic $$topic \
162+ --partitions 1 --replication-factor 1
163+
164+ echo "Initializing consumer for topic $$topic and group $$group"
165+ /opt/kafka/bin/kafka-console-consumer.sh \
166+ --bootstrap-server kafka:29092 \
167+ --topic $$topic \
168+ --group $$group \
169+ --timeout-ms 5000
170+ done
171+ '
172+ restart : no
173+
67174volumes :
68175 minio :
69176 ollama :
177+ mlflow :
178+ kafka :
179+
180+ networks :
181+ ollama :
182+ minio :
183+ mlflow :
184+ kafka :
0 commit comments