voxblog/docker-compose.yml
Ender 26c3c0bb0e
Some checks failed
Deploy to Production / deploy (push) Failing after 8s
refactor: standardize database env variables to use DB_* prefix
- Renamed MYSQL_ROOT_PASSWORD to DB_ROOT_PASSWORD and MYSQL_PASSWORD to DB_PASSWORD for consistent naming
- Updated docker-compose.yml to map DB_* variables to MySQL container's expected MYSQL_* format
- Removed redundant DATABASE_URL variable since individual DB_* variables are now used
- Added default values for DB_USER, DB_NAME, DB_HOST, and DB_PORT in docker-compose.yml
- Updated all documentation files to reference new standar
2025-10-28 13:11:57 +01:00

84 lines
2.1 KiB
YAML

version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: voxblog-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_NAME:-voxblog}
MYSQL_USER: ${DB_USER:-voxblog}
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
networks:
- voxblog-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
api:
build:
context: .
dockerfile: docker/api.Dockerfile
args:
PNPM_FLAGS: --no-frozen-lockfile
container_name: voxblog-api
restart: unless-stopped
ports:
- "127.0.0.1:3301:3301" # Only localhost, not internet
environment:
NODE_ENV: production
PORT: 3301
DB_HOST: ${DB_HOST:-mysql}
DB_PORT: ${DB_PORT:-3306}
DB_USER: ${DB_USER:-voxblog}
DB_PASSWORD: ${DB_PASSWORD}
DB_NAME: ${DB_NAME:-voxblog}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
OPENAI_API_KEY: ${OPENAI_API_KEY}
GHOST_ADMIN_API_KEY: ${GHOST_ADMIN_API_KEY}
GHOST_ADMIN_API_URL: ${GHOST_ADMIN_API_URL}
S3_BUCKET: ${S3_BUCKET}
S3_REGION: ${S3_REGION}
S3_ACCESS_KEY: ${S3_ACCESS_KEY}
S3_SECRET_KEY: ${S3_SECRET_KEY}
S3_ENDPOINT: ${S3_ENDPOINT}
INFISICAL_TOKEN: ${INFISICAL_TOKEN}
INFISICAL_SITE_URL: ${INFISICAL_SITE_URL}
PEXELS_API_KEY: ${PEXELS_API_KEY}
depends_on:
mysql:
condition: service_healthy
networks:
- voxblog-network
volumes:
- ./data:/app/data
admin:
build:
context: .
dockerfile: docker/admin.Dockerfile
args:
VITE_API_URL: ${VITE_API_URL:-}
PNPM_FLAGS: --no-frozen-lockfile
container_name: voxblog-admin
restart: unless-stopped
ports:
- "127.0.0.1:3300:80" # Only localhost, not internet
networks:
- voxblog-network
depends_on:
- api
networks:
voxblog-network:
driver: bridge
volumes:
mysql_data: