All checks were successful
Deploy Production (merchbay.com) / deploy (push) Successful in 2m54s
- Implemented MinIO storage driver in AppServiceProvider for S3-compatible storage. - Added helper functions to generate MinIO URLs for files and images. - Updated filesystem configuration to include MinIO settings. - Modified site configuration to include MinIO URL. - Enhanced Docker Compose configuration for local development with MinIO. - Updated various Blade templates to use MinIO URLs for images instead of local paths. - Ensured all image references in views are now pointing to MinIO storage.
151 lines
4.9 KiB
YAML
151 lines
4.9 KiB
YAML
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Local development stack
|
|
#
|
|
# Default (local MariaDB):
|
|
# docker compose --env-file .env.local -f docker-compose.local.yml up --build
|
|
#
|
|
# Remote DB via SSH private-key tunnel:
|
|
# 1. Set SSH_HOST, SSH_USER, SSH_KEY_PATH, SSH_DB_REMOTE_HOST,
|
|
# SSH_DB_REMOTE_PORT (and DB_* creds) in .env.local
|
|
# 2. docker compose --env-file .env.local -f docker-compose.local.yml --profile ssh-db up --build
|
|
# The app will talk to db-tunnel (port 3306) instead of the local db.
|
|
#
|
|
# App: http://localhost:8080
|
|
# phpMyAdmin: http://localhost:8081
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
services:
|
|
db:
|
|
image: mariadb:10.6
|
|
platform: linux/arm64
|
|
container_name: merchbay_db_local
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_DATABASE: ${DB_DATABASE:-merchbay_db}
|
|
MYSQL_ROOT_PASSWORD: root
|
|
MYSQL_USER: ${DB_USERNAME:-merchbay}
|
|
MYSQL_PASSWORD: ${DB_PASSWORD:-secret}
|
|
ports:
|
|
- "3306:3306"
|
|
volumes:
|
|
- db_data:/var/lib/mysql
|
|
networks:
|
|
- merchbay-local
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: merchbay_app_local
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:80"
|
|
environment:
|
|
- APP_ENV=local
|
|
- APP_DEBUG=true
|
|
- APP_URL=http://localhost:8080
|
|
- DB_CONNECTION=mysql
|
|
- DB_HOST=${DB_HOST:-db}
|
|
- DB_PORT=${DB_PORT:-3306}
|
|
- DB_DATABASE=${DB_DATABASE:-merchbay_db}
|
|
- DB_USERNAME=${DB_USERNAME:-merchbay}
|
|
- DB_PASSWORD=${DB_PASSWORD:-secret}
|
|
- PROD_PRIVATE=http://localhost:8080
|
|
- IMAGES_URL=${IMAGES_URL:-https://minio.crewsportswear.app/merchbay}
|
|
- UPLOAD_URL=${UPLOAD_URL:-https://minio.crewsportswear.app/merchbay/uploads/}
|
|
- MAIL_DRIVER=log
|
|
- MAIL_HOST=localhost
|
|
- MAIL_PORT=1025
|
|
- MAIL_USERNAME=null
|
|
- MAIL_PASSWORD=null
|
|
- MAIL_ENCRYPTION=null
|
|
- CAPTCHA_SITE_KEY=test_key
|
|
- CAPTCHA_SECRET_KEY=test_secret
|
|
- ANALYTICS_SITE_ID=
|
|
- ANALYTICS_CLIENT_ID=
|
|
- ANALYTICS_SERVICE_EMAIL=
|
|
# MinIO S3 Storage (connect to production MinIO for testing)
|
|
- MINIO_ENDPOINT=https://minio.crewsportswear.app
|
|
- MINIO_KEY=${MINIO_KEY:-minioadmin}
|
|
- MINIO_SECRET=${MINIO_SECRET:-minioadmin}
|
|
- MINIO_BUCKET=merchbay
|
|
- MINIO_REGION=us-east-1
|
|
- MINIO_USE_PATH_STYLE=false
|
|
- MINIO_URL=https://minio.crewsportswear.app
|
|
env_file:
|
|
- path: .env.local
|
|
required: false
|
|
volumes:
|
|
- ./:/var/www/html
|
|
- ./storage:/var/www/html/storage
|
|
- ./public/uploads:/var/www/html/public/uploads
|
|
# Keep the vendor/ directory from the image — prevents the bind-mount
|
|
# from wiping out the composer install done during docker build.
|
|
- vendor_local:/var/www/html/vendor
|
|
depends_on:
|
|
- db
|
|
networks:
|
|
- merchbay-local
|
|
|
|
# ── SSH tunnel to a remote database ────────────────────────────────────────
|
|
# Activated only with: --profile ssh-db
|
|
# Requires SSH_HOST, SSH_USER, SSH_KEY_PATH (and optionally SSH_PORT,
|
|
# SSH_DB_REMOTE_HOST, SSH_DB_REMOTE_PORT) set in .env.local.
|
|
db-tunnel:
|
|
profiles:
|
|
- ssh-db
|
|
image: alpine:3.19
|
|
container_name: merchbay_db_tunnel
|
|
restart: unless-stopped
|
|
environment:
|
|
- SSH_HOST=${SSH_HOST}
|
|
- SSH_PORT=${SSH_PORT:-22}
|
|
- SSH_USER=${SSH_USER:-root}
|
|
- SSH_DB_REMOTE_HOST=${SSH_DB_REMOTE_HOST:-127.0.0.1}
|
|
- SSH_DB_REMOTE_PORT=${SSH_DB_REMOTE_PORT:-3306}
|
|
volumes:
|
|
- ${SSH_KEY_PATH:-~/.ssh/id_rsa}:/ssh/id_rsa:ro
|
|
command:
|
|
- sh
|
|
- -c
|
|
- |
|
|
apk add --no-cache openssh-client
|
|
cp /ssh/id_rsa /tmp/id_rsa
|
|
chmod 600 /tmp/id_rsa
|
|
echo "Starting SSH tunnel to $$SSH_HOST..."
|
|
exec ssh -N \
|
|
-o StrictHostKeyChecking=no \
|
|
-o ServerAliveInterval=30 \
|
|
-o ServerAliveCountMax=3 \
|
|
-o ExitOnForwardFailure=yes \
|
|
-i /tmp/id_rsa \
|
|
-L "0.0.0.0:3306:$$SSH_DB_REMOTE_HOST:$$SSH_DB_REMOTE_PORT" \
|
|
-p "$$SSH_PORT" \
|
|
"$$SSH_USER@$$SSH_HOST"
|
|
networks:
|
|
- merchbay-local
|
|
|
|
phpmyadmin:
|
|
image: arm64v8/phpmyadmin
|
|
platform: linux/arm64
|
|
container_name: merchbay_phpmyadmin
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8081:80"
|
|
environment:
|
|
PMA_HOST: db
|
|
PMA_PORT: 3306
|
|
MYSQL_ROOT_PASSWORD: root
|
|
depends_on:
|
|
- db
|
|
networks:
|
|
- merchbay-local
|
|
|
|
networks:
|
|
merchbay-local:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
db_data:
|
|
vendor_local:
|