@@ -53,7 +53,8 @@ PG_EXTENSION_CONTROL = docker/postgresql/$(EXTENSION).control
5353# ============================================================================
5454
5555.PHONY: postgres-check postgres-build postgres-install postgres-clean postgres-test \
56- postgres-docker-build postgres-docker-run postgres-docker-stop postgres-docker-rebuild \
56+ postgres-docker-build postgres-docker-build-asan postgres-docker-run postgres-docker-run-asan postgres-docker-stop postgres-docker-rebuild \
57+ postgres-docker-debug-build postgres-docker-debug-run postgres-docker-debug-rebuild \
5758 postgres-docker-shell postgres-dev-rebuild postgres-help unittest-pg
5859
5960# Check if PostgreSQL is available
@@ -127,6 +128,22 @@ postgres-docker-build:
127128 @echo ""
128129 @echo "Docker image built successfully!"
129130
131+ # Build Docker image with AddressSanitizer enabled (override compose file)
132+ postgres-docker-build-asan:
133+ @echo "Building Docker image with ASAN via docker-compose..."
134+ # To force plaintext BuildKit logs, run: make postgres-docker-build-asan DOCKER_BUILD_ARGS=\"--progress=plain\"
135+ cd docker/postgresql && docker-compose -f docker-compose.debug.yml -f docker-compose.asan.yml build $(DOCKER_BUILD_ARGS)
136+ @echo ""
137+ @echo "ASAN Docker image built successfully!"
138+
139+ # Build Docker image using docker-compose.debug.yml
140+ postgres-docker-debug-build:
141+ @echo "Building debug Docker image via docker-compose..."
142+ # To force plaintext BuildKit logs, run: make postgres-docker-debug-build DOCKER_BUILD_ARGS=\"--progress=plain\"
143+ cd docker/postgresql && docker-compose -f docker-compose.debug.yml build $(DOCKER_BUILD_ARGS)
144+ @echo ""
145+ @echo "Debug Docker image built successfully!"
146+
130147# Run PostgreSQL container with CloudSync
131148postgres-docker-run:
132149 @echo "Starting PostgreSQL with CloudSync..."
@@ -144,6 +161,40 @@ postgres-docker-run:
144161 @echo " CREATE EXTENSION cloudsync;"
145162 @echo " SELECT cloudsync_version();"
146163
164+ # Run PostgreSQL container with CloudSync and AddressSanitizer enabled
165+ postgres-docker-run-asan:
166+ @echo "Starting PostgreSQL with CloudSync (ASAN enabled)..."
167+ cd docker/postgresql && docker-compose -f docker-compose.debug.yml -f docker-compose.asan.yml up -d --build
168+ @echo ""
169+ @echo "Container started successfully!"
170+ @echo ""
171+ @echo "Connect with psql:"
172+ @echo " docker exec -it cloudsync-postgres psql -U postgres -d cloudsync_test"
173+ @echo ""
174+ @echo "Or from host:"
175+ @echo " psql postgresql://postgres:postgres@localhost:5432/cloudsync_test"
176+ @echo ""
177+ @echo "Enable extension:"
178+ @echo " CREATE EXTENSION cloudsync;"
179+ @echo " SELECT cloudsync_version();"
180+
181+ # Run PostgreSQL container using docker-compose.debug.yml
182+ postgres-docker-debug-run:
183+ @echo "Starting PostgreSQL with CloudSync (debug compose)..."
184+ cd docker/postgresql && docker-compose -f docker-compose.debug.yml up -d --build
185+ @echo ""
186+ @echo "Container started successfully!"
187+ @echo ""
188+ @echo "Connect with psql:"
189+ @echo " docker exec -it cloudsync-postgres psql -U postgres -d cloudsync_test"
190+ @echo ""
191+ @echo "Or from host:"
192+ @echo " psql postgresql://postgres:postgres@localhost:5432/cloudsync_test"
193+ @echo ""
194+ @echo "Enable extension:"
195+ @echo " CREATE EXTENSION cloudsync;"
196+ @echo " SELECT cloudsync_version();"
197+
147198# Stop PostgreSQL container
148199postgres-docker-stop:
149200 @echo "Stopping PostgreSQL container..."
@@ -157,6 +208,13 @@ postgres-docker-rebuild: postgres-docker-build
157208 cd docker/postgresql && docker-compose up -d --build
158209 @echo "Container restarted with new image"
159210
211+ # Rebuild and restart container using docker-compose.debug.yml
212+ postgres-docker-debug-rebuild: postgres-docker-debug-build
213+ @echo "Rebuilding and restarting debug container..."
214+ cd docker/postgresql && docker-compose -f docker-compose.debug.yml down
215+ cd docker/postgresql && docker-compose -f docker-compose.debug.yml up -d --build
216+ @echo "Debug container restarted with new image"
217+
160218# Interactive shell in container
161219postgres-docker-shell:
162220 @echo "Opening shell in PostgreSQL container..."
@@ -192,6 +250,11 @@ postgres-help:
192250 @echo ""
193251 @echo "Docker Targets:"
194252 @echo " postgres-docker-build - Build Docker image with pre-installed extension"
253+ @echo " postgres-docker-build-asan - Build Docker image with ASAN enabled"
254+ @echo " postgres-docker-run-asan - Run container with ASAN enabled"
255+ @echo " postgres-docker-debug-build - Build image via docker-compose.debug.yml"
256+ @echo " postgres-docker-debug-run - Run container via docker-compose.debug.yml"
257+ @echo " postgres-docker-debug-rebuild - Rebuild and run docker-compose.debug.yml"
195258 @echo " postgres-docker-run - Start PostgreSQL container"
196259 @echo " postgres-docker-stop - Stop PostgreSQL container"
197260 @echo " postgres-docker-rebuild - Rebuild image and restart container"
@@ -203,6 +266,11 @@ postgres-help:
203266 @echo ""
204267 @echo "Examples:"
205268 @echo " make postgres-docker-build # Build image"
269+ @echo " make postgres-docker-build-asan # Build image with ASAN"
270+ @echo " make postgres-docker-run-asan # Run container with ASAN"
271+ @echo " make postgres-docker-debug-build # Build debug compose image"
272+ @echo " make postgres-docker-debug-run # Run debug compose container"
273+ @echo " make postgres-docker-debug-rebuild # Rebuild debug compose container"
206274 @echo " make postgres-docker-run # Start container"
207275 @echo " make postgres-docker-shell # Open shell"
208276 @echo " make postgres-dev-rebuild # Rebuild after code changes"
0 commit comments