voxblog/docker-compose.yml
Ender 0c2813bea6 feat: migrate stock photo integration from Unsplash to Pexels
- Replaced Unsplash API integration with Pexels API for stock photo search and import
- Updated API response transformation to match frontend expectations with Pexels data structure
- Removed Unsplash-specific download tracking and attribution requirements
- Modified environment configuration to use PEXELS_API_KEY instead of UNSPLASH_ACCESS_KEY
- Updated UI text and attribution links to reference Pexels instead of Unsplash
- Simplifie
2025-10-28 12:43:17 +01:00

85 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: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: voxblog
MYSQL_USER: voxblog
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
networks:
- voxblog-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_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
DATABASE_URL: mysql://voxblog:${MYSQL_PASSWORD}@mysql:3306/voxblog
DB_HOST: mysql
DB_PORT: 3306
DB_USER: voxblog
DB_PASSWORD: ${MYSQL_PASSWORD}
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: