services: recipe-frontend: image: recipe-frontend:local container_name: recipe-frontend restart: unless-stopped environment: NODE_ENV: "production" HOSTNAME: "0.0.0.0" PORT: "3000" NEXT_PUBLIC_APP_URL: "https://recept.gynther.se" NEXT_PUBLIC_API_URL: "https://api.recept.gynther.se" NEXT_PUBLIC_API_URL_INTERNAL: "http://recipe-api:8080" networks: - proxy - recipe-internal recipe-api: image: recipe-api:local container_name: recipe-api restart: unless-stopped depends_on: recipe-db: condition: service_healthy recipe-import-service: condition: service_healthy environment: NODE_ENV: "production" DATABASE_URL: "mysql://recipe_user:Imminent-Umpire-Undertook8-Crunchy@recipe-db:3306/recipe_app" # New: Import service URL for backend to call IMPORT_SERVICE_URL: "http://recipe-import-service:3000" networks: - proxy - recipe-internal recipe-db: image: mariadb:11 container_name: recipe-db restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: "Encrust6-Deserve-Stricken-Spectacle" MARIADB_DATABASE: "recipe_app" MARIADB_USER: "recipe_user" MARIADB_PASSWORD: "Imminent-Umpire-Undertook8-Crunchy" volumes: - recipe_db_data:/var/lib/mysql command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci networks: - recipe-internal healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 # === NEW: Import Service (Document Converter) === recipe-import-service: build: context: ./recipe-document-converter/recipe-document-converter dockerfile: Dockerfile image: recipe-import-service:local container_name: recipe-import-service restart: unless-stopped environment: NODE_ENV: "production" PORT: "3000" LOG_LEVEL: "info" MAX_FILE_SIZE: "50000000" volumes: - recipe_imports:/app/uploads networks: - recipe-internal # Only internal communication with recipe-api healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: recipe_db_data: recipe_imports: networks: proxy: external: true recipe-internal: driver: bridge