mirror of
https://github.com/coollabsio/coolify-examples.git
synced 2026-04-05 20:01:32 +00:00
Add docker-compose bind mount preview test case (#67)
Test case for coolify#7802 — reproduces the bug where bind mount volumes from repo content get an incorrect -pr-N suffix during Preview Deployments. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
19
docker-compose-bind-mount-preview/README.md
Normal file
19
docker-compose-bind-mount-preview/README.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Docker Compose Bind Mount Preview Test
|
||||
|
||||
Test case for [coolify#7802](https://github.com/coollabsio/coolify/issues/7802) — volume mappings from repo content in Preview Deployments.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Add this repo as a Docker Compose resource in Coolify
|
||||
2. Set the base directory to `/docker-compose-bind-mount-preview`
|
||||
3. Deploy — should succeed (db_bootstrap runs the script from `./scripts`)
|
||||
4. Enable **Preview Deployments**
|
||||
5. Open a PR and deploy the preview
|
||||
|
||||
## Expected
|
||||
|
||||
The preview deployment should work the same as the main deployment — the `./scripts` bind mount should resolve to the repo's `scripts/` directory.
|
||||
|
||||
## Actual (bug)
|
||||
|
||||
The preview deployment fails because Coolify appends `-pr-N` to the bind mount path, looking for `scripts-pr-1` which doesn't exist.
|
||||
42
docker-compose-bind-mount-preview/docker-compose.yml
Normal file
42
docker-compose-bind-mount-preview/docker-compose.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
services:
|
||||
|
||||
postgres:
|
||||
image: postgres:16.4
|
||||
container_name: postgres_test
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_USER: ${COMPOSE__POSTGRES_USER:-postgres}
|
||||
POSTGRES_PASSWORD: ${COMPOSE__POSTGRES_PASSWORD:-postgres}
|
||||
POSTGRES_DB: ${COMPOSE__POSTGRES_DB:-postgres}
|
||||
expose:
|
||||
- "5432"
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
|
||||
interval: 10s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
db_bootstrap:
|
||||
image: postgres:16.4
|
||||
container_name: db_bootstrap_test
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DB_HOST: ${COMPOSE__POSTGRES_HOST:-postgres}
|
||||
DB_NAME: ${COMPOSE__POSTGRES_DB:-postgres}
|
||||
DB_USER: ${COMPOSE__POSTGRES_USER:-postgres}
|
||||
PGPASSWORD: ${COMPOSE__POSTGRES_PASSWORD:-postgres}
|
||||
volumes:
|
||||
- ./scripts:/scripts:ro
|
||||
entrypoint: [ "bash", "/scripts/bootstrap_db.sh" ]
|
||||
restart: "no"
|
||||
|
||||
main_service:
|
||||
image: nginx:latest
|
||||
container_name: nginx_server
|
||||
ports:
|
||||
- '0:80'
|
||||
depends_on:
|
||||
db_bootstrap:
|
||||
condition: service_completed_successfully
|
||||
20
docker-compose-bind-mount-preview/scripts/bootstrap_db.sh
Normal file
20
docker-compose-bind-mount-preview/scripts/bootstrap_db.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Waiting for PostgreSQL to be ready..."
|
||||
until psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c '\q' 2>/dev/null; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Creating test table..."
|
||||
psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" <<SQL
|
||||
CREATE TABLE IF NOT EXISTS test_table (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
INSERT INTO test_table (name) VALUES ('hello from bootstrap');
|
||||
SQL
|
||||
|
||||
echo "Bootstrap complete!"
|
||||
Reference in New Issue
Block a user