forked from cardosofelipe/fast-next-template
- Adjusted `docker-compose.dev.yml` to reflect the new venv location. - Modified entrypoint script and Dockerfile to reference `/opt/venv` for isolated dependencies. - Improved bind mount setup to prevent venv overwrites during development.
30 lines
1.0 KiB
Bash
Executable File
30 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Ensure the virtualenv binaries are on PATH. Dependencies are installed
|
|
# to /opt/venv (not /app/.venv) to survive bind mounts in development.
|
|
if [ -d "/opt/venv/bin" ]; then
|
|
export PATH="/opt/venv/bin:$PATH"
|
|
export VIRTUAL_ENV="/opt/venv"
|
|
fi
|
|
|
|
# Only the backend service should run migrations and init_db
|
|
# Celery workers should skip this to avoid race conditions
|
|
# Check if the first argument contains 'celery' - if so, skip migrations
|
|
if [[ "$1" == *"celery"* ]]; then
|
|
echo "Starting Celery worker (skipping migrations)"
|
|
else
|
|
echo "Starting Backend"
|
|
|
|
# Apply database migrations
|
|
# Avoid installing the project in editable mode (which tries to write egg-info)
|
|
# when running inside a bind-mounted volume with restricted permissions.
|
|
# See: https://github.com/astral-sh/uv (use --no-project to skip project build)
|
|
uv run --no-project alembic upgrade head
|
|
|
|
# Initialize database (creates first superuser if needed)
|
|
uv run --no-project python app/init_db.py
|
|
fi
|
|
|
|
# Execute the command passed to docker run
|
|
exec "$@" |