11x-lakekeeper-env : &lakekeeper-env
22 environment :
33 - LAKEKEEPER__PG_ENCRYPTION_KEY=insecure-encryption-key
4- - LAKEKEEPER__PG_DATABASE_URL_READ=postgresql://postgres:postgres@postgres:5432/iceberg-catalog
5- - LAKEKEEPER__PG_DATABASE_URL_WRITE=postgresql://postgres:postgres@postgres:5432/iceberg-catalog
4+ - LAKEKEEPER__PG_DATABASE_URL_READ=postgresql://lakekeeper- postgres:lakekeeper- postgres@lakekeeper- postgres:5432/iceberg-catalog
5+ - LAKEKEEPER__PG_DATABASE_URL_WRITE=postgresql://lakekeeper- postgres:lakekeeper- postgres@lakekeeper- postgres:5432/iceberg-catalog
66 - RUST_LOG=info
77
8- name : etl
8+ name : etl-pg-${POSTGRES_VERSION:-17}
99
1010services :
1111 # Start Postgres
1212 postgres :
1313 image : postgres:${POSTGRES_VERSION:-17}
14- container_name : postgres
1514 environment :
1615 POSTGRES_USER : ${POSTGRES_USER:-postgres}
1716 POSTGRES_PASSWORD : ${POSTGRES_PASSWORD:-postgres}
@@ -20,10 +19,6 @@ services:
2019 - " ${POSTGRES_PORT:-5430}:5432"
2120 volumes :
2221 - ${POSTGRES_DATA_VOLUME:-postgres_data}:/var/lib/postgresql/data
23- configs :
24- - source : postgres_init
25- target : /docker-entrypoint-initdb.d/01-create-iceberg-catalog.sh
26- mode : 0755
2722 command : >
2823 postgres
2924 -N 1000
@@ -37,10 +32,24 @@ services:
3732 timeout : 5s
3833 retries : 5
3934
35+ lakekeeper-postgres :
36+ image : postgres:17
37+ environment :
38+ POSTGRES_USER : ${LAKEKEEPER_POSTGRES_USER:-lakekeeper-postgres}
39+ POSTGRES_PASSWORD : ${LAKEKEEPER_POSTGRES_PASSWORD:-lakekeeper-postgres}
40+ POSTGRES_DB : ${LAKEKEEPER_POSTGRES_DB:-iceberg-catalog}
41+ volumes :
42+ - ${LAKEKEEPER_POSTGRES_DATA_VOLUME:-lakekeeper_postgres_data}:/var/lib/postgresql/data
43+ restart : unless-stopped
44+ healthcheck :
45+ test : ["CMD-SHELL", "pg_isready -U ${LAKEKEEPER_POSTGRES_USER:-lakekeeper-postgres} -d ${LAKEKEEPER_POSTGRES_DB:-iceberg-catalog}"]
46+ interval : 5s
47+ timeout : 5s
48+ retries : 5
49+
4050 # Start MinIO for S3-compatible object storage
4151 minio :
4252 image : minio/minio:latest
43- container_name : minio
4453 environment :
4554 MINIO_ROOT_USER : minio-admin
4655 MINIO_ROOT_PASSWORD : minio-admin-password
@@ -59,7 +68,6 @@ services:
5968 # Create MinIO bucket
6069 create-bucket :
6170 image : minio/mc:latest
62- container_name : create-bucket
6371 depends_on :
6472 minio :
6573 condition : service_healthy
@@ -73,18 +81,16 @@ services:
7381 # Migrate lakekeeper database
7482 migrate-lakekeeper :
7583 image : quay.io/lakekeeper/catalog:latest-main
76- container_name : migrate-lakekeeper
7784 << : *lakekeeper-env
7885 restart : " no"
7986 command : ["migrate"]
8087 depends_on :
81- postgres :
88+ lakekeeper- postgres :
8289 condition : service_healthy
8390
8491 # Start lakekeeper, an iceberg REST catalog
8592 lakekeeper :
8693 image : quay.io/lakekeeper/catalog:latest-main
87- container_name : lakekeeper
8894 depends_on :
8995 migrate-lakekeeper :
9096 condition : service_completed_successfully
@@ -104,7 +110,6 @@ services:
104110 # Bootstrap lakekeeper. After deployment, lakekeeper needs to be bootstrapped.
105111 bootstrap-lakekeeper :
106112 image : curlimages/curl
107- container_name : bootstrap-lakekeeper
108113 depends_on :
109114 lakekeeper :
110115 condition : service_healthy
@@ -127,7 +132,6 @@ services:
127132 # Create a warehouse for development and testing
128133 create-warehouse :
129134 image : curlimages/curl
130- container_name : create-warehouse
131135 depends_on :
132136 lakekeeper :
133137 condition : service_healthy
@@ -153,18 +157,10 @@ services:
153157 volumes :
154158 - ./warehouse.json:/home/curl_user/warehouse.json
155159
156- configs :
157- postgres_init :
158- content : |
159- #!/bin/bash
160- set -e
161-
162- psql -v ON_ERROR_STOP=1 --username "${POSTGRES_USER:-postgres}" --dbname "${POSTGRES_DB:-postgres}" <<-EOSQL
163- CREATE DATABASE "iceberg-catalog";
164- EOSQL
165-
166160volumes :
167161 postgres_data :
168162 driver : local
163+ lakekeeper_postgres_data :
164+ driver : local
169165 minio_data :
170166 driver : local
0 commit comments