52 - Move dev compose to docker/dev/ to match the standard layout
This commit is contained in:
parent
ba7df4b5ad
commit
cca3f29823
4 changed files with 33 additions and 24 deletions
|
|
@ -13,7 +13,7 @@ ## Reporting issues
|
|||
## Development setup
|
||||
|
||||
Requires PHP 8.2+ and a container runtime (Podman or Docker). The development
|
||||
environment runs in containers defined by `docker-compose.yml`.
|
||||
environment runs in containers defined by `docker/dev/docker-compose.yml`.
|
||||
|
||||
On NixOS, or anywhere with Nix installed:
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ ## Development setup
|
|||
| Mailhog | http://localhost:8025 |
|
||||
| MariaDB | localhost:3306 |
|
||||
|
||||
Without Nix, start the same containers directly from `docker-compose.yml`.
|
||||
Without Nix, start the same containers directly from `docker/dev/docker-compose.yml`.
|
||||
Contributions improving the setup instructions for other platforms are welcome.
|
||||
|
||||
## Before opening a pull request
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ ## 🚀 Self-hosting
|
|||
|
||||
The production image is available at `forge.lvl0.xyz/lvl0/dishplanner:latest`. See [CHANGELOG.md](CHANGELOG.md) before upgrading.
|
||||
|
||||
### docker-compose.yml
|
||||
### docker-compose.prod.yml
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
# Local Development Docker Compose
|
||||
name: dishplanner
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
context: ../..
|
||||
dockerfile: Dockerfile.dev
|
||||
container_name: dishplanner_app
|
||||
restart: unless-stopped
|
||||
|
|
@ -41,7 +42,7 @@ services:
|
|||
VITE_HOST: "0.0.0.0"
|
||||
volumes:
|
||||
# Mount entire project for hot reload with SELinux context
|
||||
- .:/app:Z
|
||||
- ../..:/app:Z
|
||||
# Named volumes for performance and permission isolation
|
||||
- app_vendor:/app/vendor
|
||||
- app_node_modules:/app/node_modules
|
||||
|
|
@ -64,7 +65,7 @@ services:
|
|||
volumes:
|
||||
- db_data:/var/lib/mysql
|
||||
# Initialize with SQL scripts
|
||||
- ./docker/mysql-init:/docker-entrypoint-initdb.d
|
||||
- ../mysql-init:/docker-entrypoint-initdb.d
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
interval: 10s
|
||||
42
shell.nix
42
shell.nix
|
|
@ -29,59 +29,67 @@ pkgs.mkShell {
|
|||
# Use keep-id for proper permission mapping in rootless podman
|
||||
export PODMAN_USERNS=keep-id
|
||||
|
||||
# Compose file location
|
||||
COMPOSE_FILE="$PWD/docker/dev/docker-compose.yml"
|
||||
|
||||
# ===================
|
||||
# ALIASES
|
||||
# ===================
|
||||
alias pc='podman-compose -f $COMPOSE_FILE'
|
||||
|
||||
# Define helper functions
|
||||
dev-rebuild() {
|
||||
echo "🔨 Rebuilding development environment..."
|
||||
PODMAN_USERNS=keep-id podman-compose down -v
|
||||
PODMAN_USERNS=keep-id podman-compose build --no-cache app
|
||||
PODMAN_USERNS=keep-id podman-compose up -d
|
||||
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE down -v
|
||||
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE build --no-cache app
|
||||
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE up -d
|
||||
echo "✅ Rebuild complete! Check logs with: dev-logs"
|
||||
}
|
||||
|
||||
dev-rebuild-quick() {
|
||||
echo "⚡ Quick rebuild (keeping volumes)..."
|
||||
PODMAN_USERNS=keep-id podman-compose down
|
||||
PODMAN_USERNS=keep-id podman-compose build app
|
||||
PODMAN_USERNS=keep-id podman-compose up -d
|
||||
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE down
|
||||
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE build app
|
||||
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE up -d
|
||||
echo "✅ Quick rebuild complete!"
|
||||
}
|
||||
|
||||
dev-up() {
|
||||
echo "🚀 Starting development environment..."
|
||||
PODMAN_USERNS=keep-id podman-compose up -d
|
||||
PODMAN_USERNS=keep-id podman-compose -f $COMPOSE_FILE up -d
|
||||
echo "✅ Dev environment started!"
|
||||
}
|
||||
|
||||
dev-down() {
|
||||
echo "🛑 Stopping development environment..."
|
||||
podman-compose down
|
||||
podman-compose -f $COMPOSE_FILE down
|
||||
echo "✅ Dev environment stopped!"
|
||||
}
|
||||
|
||||
dev-restart() {
|
||||
echo "🔄 Restarting development environment..."
|
||||
podman-compose restart
|
||||
podman-compose -f $COMPOSE_FILE restart
|
||||
echo "✅ Dev environment restarted!"
|
||||
}
|
||||
|
||||
dev-logs() {
|
||||
podman-compose logs -f "$@"
|
||||
podman-compose -f $COMPOSE_FILE logs -f "$@"
|
||||
}
|
||||
|
||||
dev-logs-db() {
|
||||
podman-compose logs -f db "$@"
|
||||
podman-compose -f $COMPOSE_FILE logs -f db "$@"
|
||||
}
|
||||
|
||||
dev-shell() {
|
||||
podman-compose exec app sh
|
||||
podman-compose -f $COMPOSE_FILE exec app sh
|
||||
}
|
||||
|
||||
dev-artisan() {
|
||||
podman-compose exec app php artisan "$@"
|
||||
podman-compose -f $COMPOSE_FILE exec app php artisan "$@"
|
||||
}
|
||||
|
||||
dev-test() {
|
||||
podman-compose exec -T app env $(grep -vE '^\s*(#|$)' .env.testing) php -d memory_limit=512M vendor/bin/phpunit "$@"
|
||||
podman-compose -f $COMPOSE_FILE exec -T app env $(grep -vE '^\s*(#|$)' .env.testing) php -d memory_limit=512M vendor/bin/phpunit "$@"
|
||||
}
|
||||
|
||||
dev-fix-permissions() {
|
||||
|
|
@ -171,12 +179,12 @@ pkgs.mkShell {
|
|||
echo ""
|
||||
|
||||
# Auto-start prompt
|
||||
if [ -f "docker-compose.yml" ]; then
|
||||
if [ -f "$COMPOSE_FILE" ]; then
|
||||
read -p "Start development containers? (y/N) " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Starting containers..."
|
||||
podman-compose up -d
|
||||
podman-compose -f $COMPOSE_FILE up -d
|
||||
|
||||
# Wait a moment for containers to start
|
||||
sleep 3
|
||||
|
|
@ -188,7 +196,7 @@ pkgs.mkShell {
|
|||
echo " Mailhog: http://localhost:8025"
|
||||
echo " MariaDB: localhost:3306"
|
||||
echo ""
|
||||
echo "Run 'podman-compose logs -f app' to follow logs"
|
||||
echo "Run 'pc logs -f app' to follow logs"
|
||||
fi
|
||||
fi
|
||||
'';
|
||||
|
|
|
|||
Loading…
Reference in a new issue