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
@@ -74,18 +82,16 @@ services:
7482 # Migrate lakekeeper database
7583 migrate-lakekeeper :
7684 image : quay.io/lakekeeper/catalog:latest-main
77- container_name : migrate-lakekeeper
7885 << : *lakekeeper-env
7986 restart : " no"
8087 command : ["migrate"]
8188 depends_on :
82- postgres :
89+ lakekeeper- postgres :
8390 condition : service_healthy
8491
8592 # Start lakekeeper, an iceberg REST catalog
8693 lakekeeper :
8794 image : quay.io/lakekeeper/catalog:latest-main
88- container_name : lakekeeper
8995 depends_on :
9096 migrate-lakekeeper :
9197 condition : service_completed_successfully
@@ -105,7 +111,6 @@ services:
105111 # Bootstrap lakekeeper. After deployment, lakekeeper needs to be bootstrapped.
106112 bootstrap-lakekeeper :
107113 image : curlimages/curl
108- container_name : bootstrap-lakekeeper
109114 depends_on :
110115 lakekeeper :
111116 condition : service_healthy
@@ -128,7 +133,6 @@ services:
128133 # Create a warehouse for development and testing
129134 create-warehouse :
130135 image : curlimages/curl
131- container_name : create-warehouse
132136 depends_on :
133137 lakekeeper :
134138 condition : service_healthy
@@ -154,18 +158,10 @@ services:
154158 volumes :
155159 - ./warehouse.json:/home/curl_user/warehouse.json
156160
157- configs :
158- postgres_init :
159- content : |
160- #!/bin/bash
161- set -e
162-
163- psql -v ON_ERROR_STOP=1 --username "${POSTGRES_USER:-postgres}" --dbname "${POSTGRES_DB:-postgres}" <<-EOSQL
164- CREATE DATABASE "iceberg-catalog";
165- EOSQL
166-
167161volumes :
168162 postgres_data :
169163 driver : local
164+ lakekeeper_postgres_data :
165+ driver : local
170166 minio_data :
171167 driver : local
0 commit comments