-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
172 lines (158 loc) · 5.29 KB
/
docker-compose.yml
File metadata and controls
172 lines (158 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
167
168
169
170
171
172
services:
minio:
image: minio/minio
container_name: minio
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=password
- MINIO_DOMAIN=minio
networks:
main:
aliases:
- warehouse.minio
ports:
- 9001:9001
- 9000:9000
command: ["server", "/data", "--console-address", ":9001"]
volumes:
- ./minio-data:/data
mc:
depends_on:
- minio
image: minio/mc
container_name: mc
networks:
main:
environment:
- AWS_ACCESS_KEY_ID=admin
- AWS_SECRET_ACCESS_KEY=password
- AWS_REGION=us-east-1
entrypoint: |
/bin/sh -c "
until (/usr/bin/mc alias set minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done;
/usr/bin/mc rm -r --force minio/warehouse;
/usr/bin/mc mb minio/warehouse;
/usr/bin/mc policy set public minio/warehouse;
tail -f /dev/null
"
postgresdb:
# Postgres Image
image: postgres:17.5-alpine3.22
# This is the Postgres server hostname
hostname: metastore_db
# ports:
# this is optional only in case you wish to expose the Postgres port
#- '5432:5432'
# In case of service/container crash, the container will restart.
restart: always
environment:
# Specify the username that will be created in the Postgres DB.
# You can change this to any username you prefer.
POSTGRES_USER: hive
# Set password for the Postgres user. Change this to a more complex password.
POSTGRES_PASSWORD: hive
# Name of the database created in Postgres. You can modify this name if desired.
POSTGRES_DB: metastore
volumes:
# Postgres DB data will be saved on the Linux box under /data/postgres.
# You can change the host path if you want to store the data in a different location.
- ./data/postgres:/var/lib/postgresql/data
networks:
main:
hive-metastore:
# This is the Hive Metastore service
image: 'starburstdata/hive:3.1.2-e.18'
# This is the hive server hostname
hostname: hive-metastore
ports:
# Expose Metastore Thrift service on port 9083.
- '9083:9083'
# In case of service/container crash, the container will restart.
restart: always
environment:
# JDBC driver for connecting Hive Metastore to Postgres
HIVE_METASTORE_DRIVER: org.postgresql.Driver
# JDBC URL for the Postgres DB. Ensure the hostname and port match your Postgres service.
HIVE_METASTORE_JDBC_URL: jdbc:postgresql://metastore_db:5432/metastore
# Username for connecting to Postgres from Hive. Change this if you modified POSTGRES_USER.
HIVE_METASTORE_USER: hive
# Password for connecting to Postgres from Hive. Change this if you modified POSTGRES_PASSWORD.
HIVE_METASTORE_PASSWORD: hive
# Location of the Hive warehouse where Delta Lake data is stored.
# You can modify this to match the bucket or path in your MinIO setup.
HIVE_METASTORE_WAREHOUSE_DIR: s3://warehouse/
# MinIO endpoint. Replace this with your MinIO address and port.
S3_ENDPOINT: http://minio:9000
# Access key for MinIO. Change this to your actual MinIO access key.
S3_ACCESS_KEY: admin
# Secret key for MinIO. Change this to your actual MinIO secret key.
S3_SECRET_KEY: password
# Use path-style access. Keep this set to "true" for MinIO compatibility.
S3_PATH_STYLE_ACCESS: "true"
# The region for S3 storage. For MinIO, leave this blank.
REGION: ""
# Following fields are placeholders for integration with other cloud services like Google Cloud and Azure.
# These can be left blank unless you're using one of those services.
GOOGLE_CLOUD_KEY_FILE_PATH: ""
AZURE_ADL_CLIENT_ID: ""
AZURE_ADL_CREDENTIAL: ""
AZURE_ADL_REFRESH_URL: ""
AZURE_ABFS_STORAGE_ACCOUNT: ""
AZURE_ABFS_ACCESS_KEY: ""
AZURE_WASB_STORAGE_ACCOUNT: ""
AZURE_ABFS_OAUTH: ""
AZURE_ABFS_OAUTH_TOKEN_PROVIDER: ""
AZURE_ABFS_OAUTH_CLIENT_ID: ""
AZURE_ABFS_OAUTH_SECRET: ""
AZURE_ABFS_OAUTH_ENDPOINT: ""
AZURE_WASB_ACCESS_KEY: ""
# Define Hive Metastore admin role. You can change the role if needed.
HIVE_METASTORE_USERS_IN_ADMIN_ROLE: "admin"
healthcheck:
# Health check to confirm if the Hive Metastore is running on port 9083.
test: bash -c "exec 6<> /dev/tcp/localhost/9083"
networks:
main:
trino:
build:
context: ./trinodb
dockerfile: Dockerfile
container_name: trino
ports:
- 8082:8080
networks:
main:
superset:
build:
context: ./superset
dockerfile: Dockerfile
container_name: superset
environment:
- ADMIN_USERNAME=admin
- ADMIN_EMAIL=admin@superset.com
- ADMIN_PASSWORD=admin
ports:
- 8088:8088
networks:
main:
dbt:
image: dbt:latest
container_name: dbt
build:
context: ./dbt
dockerfile: Dockerfile
platform: linux/amd64
volumes:
- ./dbt/data:/usr/app/dbt/data
- ./dbt/target/docs/dbt_compiled_sql:/usr/app/dbt/target/compiled
- ./dbt/target/docs/dbt_served_docs:/usr/app/dbt/target/docs
ports:
- 8080:8080
depends_on:
- trino
- minio
restart: always
networks:
main:
networks:
main: