Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/bozonx_translate-gateway-microservice.json
T

1 line
37 KiB
JSON

{"repo": "bozonx/translate-gateway-microservice", "files": {"src/lib/config.ts": {"9313fac8dd5554bb177142f6dab791a096c1ec95": {"t": 1785745568.3036325, "n": 2326, "h": "b2b51392b9151732", "c": "import { z } from 'zod'\n\nexport const EnvSchema = z.object({\n NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),\n LISTEN_HOST: z.string().default('0.0.0.0'),\n LISTEN_PORT: z.coerce.number().default(8080),\n PORT: z.coerce.number().optional(),\n LOG_LEVEL: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),\n ENABLE_UI: z\n .union([z.boolean(), z.enum(['true', 'false', '1', '0'])])\n .default('false')\n .transform((v) => (typeof v === 'boolean' ? v : v === 'true' || v === '1')),\n\n HTTP_REQUEST_BODY_LIMIT_MB: z.coerce.number().default(5),\n\n // Auth\n API_KEY: z.string().optional(),\n AUTH_BASIC_USER: z.string().optional(),\n AUTH_BASIC_PASS: z.string().optional(),\n AUTH_BEARER_TOKENS: z.string().optional(),\n\n // Translation service\n DEFAULT_PROVIDER: z.string().default('anylang'),\n MAX_TEXT_LENGTH: z.coerce.number().default(1000000),\n ALLOWED_PROVIDERS: z.string().optional(),\n REQUEST_TIMEOUT_SEC: z.coerce.number().default(50),\n DEFAULT_RETRY_MAX_ATTEMPTS: z.coerce.number().default(3),\n DEFAULT_RETRY_INITIAL_DELAY_MS: z.coerce.number().default(1000),\n DEFAULT_RETRY_MAX_DELAY_MS: z.coerce.number().default(5000),\n\n // Translation Services\n DEEPSEEK_API_KEY: z.string().optional(),\n DEEPSEEK_API_BASE_URL: z.string().optional(),\n DEEPSEEK_DEFAULT_MODEL: z.string().optional(),\n\n ANYLANG_FREE_JITTER_FACTOR: z.coerce.number().default(0.1),\n ANYLANG_DEFAULT_MODEL: z.string().default('auto'),\n ANYLANG_AUTO_MODELS: z.string().optional().default(''),\n ANYLANG_FREE_DELAY_MS: z.coerce.number().default(1000),\n ANYLANG_USER_AGENT: z\n .string()\n .default(\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'\n ),\n\n // Prompt Management\n LLM_SYSTEM_PROMPT: z.string().optional(),\n})\n\nexport type Env = z.infer<typeof EnvSchema>\n\nexport type Bindings = Env\n\nexport const parseEnv = (rawEnv: unknown): Env => {\n const record = (rawEnv ?? {}) as Record<string, unknown>\n\n const parsed = EnvSchema.parse(record)\n\n if (!record.LISTEN_PORT && typeof record.PORT !== 'undefined') {\n const port = Number(record.PORT)\n if (Number.isFinite(port) && port > 0) {\n return {\n ...parsed,\n LISTEN_PORT: port,\n }\n }\n }\n\n return parsed\n}\n"}, "87a0a7fdb96a548f8587b1a74c3c76a7e86fd043": {"t": 1785754325.3872817, "n": 2326, "h": "b2b51392b9151732", "c": "import { z } from 'zod'\n\nexport const EnvSchema = z.object({\n NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),\n LISTEN_HOST: z.string().default('0.0.0.0'),\n LISTEN_PORT: z.coerce.number().default(8080),\n PORT: z.coerce.number().optional(),\n LOG_LEVEL: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),\n ENABLE_UI: z\n .union([z.boolean(), z.enum(['true', 'false', '1', '0'])])\n .default('false')\n .transform((v) => (typeof v === 'boolean' ? v : v === 'true' || v === '1')),\n\n HTTP_REQUEST_BODY_LIMIT_MB: z.coerce.number().default(5),\n\n // Auth\n API_KEY: z.string().optional(),\n AUTH_BASIC_USER: z.string().optional(),\n AUTH_BASIC_PASS: z.string().optional(),\n AUTH_BEARER_TOKENS: z.string().optional(),\n\n // Translation service\n DEFAULT_PROVIDER: z.string().default('anylang'),\n MAX_TEXT_LENGTH: z.coerce.number().default(1000000),\n ALLOWED_PROVIDERS: z.string().optional(),\n REQUEST_TIMEOUT_SEC: z.coerce.number().default(50),\n DEFAULT_RETRY_MAX_ATTEMPTS: z.coerce.number().default(3),\n DEFAULT_RETRY_INITIAL_DELAY_MS: z.coerce.number().default(1000),\n DEFAULT_RETRY_MAX_DELAY_MS: z.coerce.number().default(5000),\n\n // Translation Services\n DEEPSEEK_API_KEY: z.string().optional(),\n DEEPSEEK_API_BASE_URL: z.string().optional(),\n DEEPSEEK_DEFAULT_MODEL: z.string().optional(),\n\n ANYLANG_FREE_JITTER_FACTOR: z.coerce.number().default(0.1),\n ANYLANG_DEFAULT_MODEL: z.string().default('auto'),\n ANYLANG_AUTO_MODELS: z.string().optional().default(''),\n ANYLANG_FREE_DELAY_MS: z.coerce.number().default(1000),\n ANYLANG_USER_AGENT: z\n .string()\n .default(\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'\n ),\n\n // Prompt Management\n LLM_SYSTEM_PROMPT: z.string().optional(),\n})\n\nexport type Env = z.infer<typeof EnvSchema>\n\nexport type Bindings = Env\n\nexport const parseEnv = (rawEnv: unknown): Env => {\n const record = (rawEnv ?? {}) as Record<string, unknown>\n\n const parsed = EnvSchema.parse(record)\n\n if (!record.LISTEN_PORT && typeof record.PORT !== 'undefined') {\n const port = Number(record.PORT)\n if (Number.isFinite(port) && port > 0) {\n return {\n ...parsed,\n LISTEN_PORT: port,\n }\n }\n }\n\n return parsed\n}\n"}, "f2b5595c8d4b5f22ff8e33cce8eafb11a6a6dfdb": {"t": 1785754330.1543212, "n": 2197, "h": "405b96bf4be14d57", "c": "import { z } from 'zod'\n\nexport const EnvSchema = z.object({\n NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),\n LISTEN_HOST: z.string().default('0.0.0.0'),\n LISTEN_PORT: z.coerce.number().default(8080),\n PORT: z.coerce.number().optional(),\n LOG_LEVEL: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),\n ENABLE_UI: z\n .union([z.boolean(), z.enum(['true', 'false', '1', '0'])])\n .default('false')\n .transform((v) => (typeof v === 'boolean' ? v : v === 'true' || v === '1')),\n\n HTTP_REQUEST_BODY_LIMIT_MB: z.coerce.number().default(5),\n\n // Auth\n API_KEY: z.string().optional(),\n\n // Translation service\n DEFAULT_PROVIDER: z.string().default('anylang'),\n MAX_TEXT_LENGTH: z.coerce.number().default(1000000),\n ALLOWED_PROVIDERS: z.string().optional(),\n REQUEST_TIMEOUT_SEC: z.coerce.number().default(50),\n DEFAULT_RETRY_MAX_ATTEMPTS: z.coerce.number().default(3),\n DEFAULT_RETRY_INITIAL_DELAY_MS: z.coerce.number().default(1000),\n DEFAULT_RETRY_MAX_DELAY_MS: z.coerce.number().default(5000),\n\n // Translation Services\n DEEPSEEK_API_KEY: z.string().optional(),\n DEEPSEEK_API_BASE_URL: z.string().optional(),\n DEEPSEEK_DEFAULT_MODEL: z.string().optional(),\n\n ANYLANG_FREE_JITTER_FACTOR: z.coerce.number().default(0.1),\n ANYLANG_DEFAULT_MODEL: z.string().default('auto'),\n ANYLANG_AUTO_MODELS: z.string().optional().default(''),\n ANYLANG_FREE_DELAY_MS: z.coerce.number().default(1000),\n ANYLANG_USER_AGENT: z\n .string()\n .default(\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'\n ),\n\n // Prompt Management\n LLM_SYSTEM_PROMPT: z.string().optional(),\n})\n\nexport type Env = z.infer<typeof EnvSchema>\n\nexport type Bindings = Env\n\nexport const parseEnv = (rawEnv: unknown): Env => {\n const record = (rawEnv ?? {}) as Record<string, unknown>\n\n const parsed = EnvSchema.parse(record)\n\n if (!record.LISTEN_PORT && typeof record.PORT !== 'undefined') {\n const port = Number(record.PORT)\n if (Number.isFinite(port) && port > 0) {\n return {\n ...parsed,\n LISTEN_PORT: port,\n }\n }\n }\n\n return parsed\n}\n"}, "89196e971c38e7695f9b404a68704d1cca3da23f": {"t": 1785754331.4492104, "n": 2142, "h": "e6615de7987f668c", "c": "import { z } from 'zod'\n\nexport const EnvSchema = z.object({\n NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),\n LISTEN_HOST: z.string().default('0.0.0.0'),\n LISTEN_PORT: z.coerce.number().default(8080),\n PORT: z.coerce.number().optional(),\n LOG_LEVEL: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),\n ENABLE_UI: z\n .enum(['true', 'false', '1', '0'])\n .default('false')\n .transform((v) => v === 'true' || v === '1'),\n\n HTTP_REQUEST_BODY_LIMIT_MB: z.coerce.number().default(5),\n\n // Auth\n API_KEY: z.string().optional(),\n\n // Translation service\n DEFAULT_PROVIDER: z.string().default('anylang'),\n MAX_TEXT_LENGTH: z.coerce.number().default(1000000),\n ALLOWED_PROVIDERS: z.string().optional(),\n REQUEST_TIMEOUT_SEC: z.coerce.number().default(50),\n DEFAULT_RETRY_MAX_ATTEMPTS: z.coerce.number().default(3),\n DEFAULT_RETRY_INITIAL_DELAY_MS: z.coerce.number().default(1000),\n DEFAULT_RETRY_MAX_DELAY_MS: z.coerce.number().default(5000),\n\n // Translation Services\n DEEPSEEK_API_KEY: z.string().optional(),\n DEEPSEEK_API_BASE_URL: z.string().optional(),\n DEEPSEEK_DEFAULT_MODEL: z.string().optional(),\n\n ANYLANG_FREE_JITTER_FACTOR: z.coerce.number().default(0.1),\n ANYLANG_DEFAULT_MODEL: z.string().default('auto'),\n ANYLANG_AUTO_MODELS: z.string().optional().default(''),\n ANYLANG_FREE_DELAY_MS: z.coerce.number().default(1000),\n ANYLANG_USER_AGENT: z\n .string()\n .default(\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'\n ),\n\n // Prompt Management\n LLM_SYSTEM_PROMPT: z.string().optional(),\n})\n\nexport type Env = z.infer<typeof EnvSchema>\n\nexport type Bindings = Env\n\nexport const parseEnv = (rawEnv: unknown): Env => {\n const record = (rawEnv ?? {}) as Record<string, unknown>\n\n const parsed = EnvSchema.parse(record)\n\n if (!record.LISTEN_PORT && typeof record.PORT !== 'undefined') {\n const port = Number(record.PORT)\n if (Number.isFinite(port) && port > 0) {\n return {\n ...parsed,\n LISTEN_PORT: port,\n }\n }\n }\n\n return parsed\n}\n"}, "7aa00348561b7f87e6d0cea8feecb3844ca5b0f8": {"t": 1785754333.0037498, "n": 2016, "h": "7e98b324ff8557f5", "c": "import { z } from 'zod'\n\nexport const EnvSchema = z.object({\n NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),\n LISTEN_HOST: z.string().default('0.0.0.0'),\n LISTEN_PORT: z.coerce.number().default(8080),\n PORT: z.coerce.number().optional(),\n LOG_LEVEL: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),\n\n HTTP_REQUEST_BODY_LIMIT_MB: z.coerce.number().default(5),\n\n // Auth\n API_KEY: z.string().optional(),\n\n // Translation service\n DEFAULT_PROVIDER: z.string().default('anylang'),\n MAX_TEXT_LENGTH: z.coerce.number().default(1000000),\n ALLOWED_PROVIDERS: z.string().optional(),\n REQUEST_TIMEOUT_SEC: z.coerce.number().default(50),\n DEFAULT_RETRY_MAX_ATTEMPTS: z.coerce.number().default(3),\n DEFAULT_RETRY_INITIAL_DELAY_MS: z.coerce.number().default(1000),\n DEFAULT_RETRY_MAX_DELAY_MS: z.coerce.number().default(5000),\n\n // Translation Services\n DEEPSEEK_API_KEY: z.string().optional(),\n DEEPSEEK_API_BASE_URL: z.string().optional(),\n DEEPSEEK_DEFAULT_MODEL: z.string().optional(),\n\n ANYLANG_FREE_JITTER_FACTOR: z.coerce.number().default(0.1),\n ANYLANG_DEFAULT_MODEL: z.string().default('auto'),\n ANYLANG_AUTO_MODELS: z.string().optional().default(''),\n ANYLANG_FREE_DELAY_MS: z.coerce.number().default(1000),\n ANYLANG_USER_AGENT: z\n .string()\n .default(\n 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'\n ),\n\n // Prompt Management\n LLM_SYSTEM_PROMPT: z.string().optional(),\n})\n\nexport type Env = z.infer<typeof EnvSchema>\n\nexport type Bindings = Env\n\nexport const parseEnv = (rawEnv: unknown): Env => {\n const record = (rawEnv ?? {}) as Record<string, unknown>\n\n const parsed = EnvSchema.parse(record)\n\n if (!record.LISTEN_PORT && typeof record.PORT !== 'undefined') {\n const port = Number(record.PORT)\n if (Number.isFinite(port) && port > 0) {\n return {\n ...parsed,\n LISTEN_PORT: port,\n }\n }\n }\n\n return parsed\n}\n"}, "588c6b05edd731d313737ef2bd49ea0e9579ae7b": {"t": 1785754334.4207494, "n": 1032, "h": "9e3fc11a717012d1", "c": "import { z } from 'zod'\n\nexport const EnvSchema = z.object({\n NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),\n PORT: z.coerce.number().default(3000),\n LOG_LEVEL: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),\n \n // Auth\n API_KEY: z.string().optional(),\n\n // Translation Services\n DEEPSEEK_API_KEY: z.string().optional(),\n DEEPSEEK_API_BASE_URL: z.string().optional(),\n DEEPSEEK_DEFAULT_MODEL: z.string().optional(),\n \n ANYLANG_FREE_JITTER_FACTOR: z.coerce.number().default(0.1),\n ANYLANG_DEFAULT_MODEL: z.string().default('google'),\n ANYLANG_AUTO_MODELS: z.string().default('google,bing,yandex'),\n ANYLANG_FREE_DELAY_MS: z.coerce.number().default(300),\n ANYLANG_USER_AGENT: z.string().default('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'),\n\n // Prompt Management\n LLM_SYSTEM_PROMPT: z.string().optional(),\n})\n\nexport type Env = z.infer<typeof EnvSchema>\n\nexport type Bindings = Env\n"}}, "docker/docker-compose.yml": {"9313fac8dd5554bb177142f6dab791a096c1ec95": {"t": 1785746345.5309963, "n": 1509, "h": "410bc278bc5a4d4c", "c": "services:\n microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n stop_grace_period: 30s\n user: '1000:1000'\n ports:\n - '8080:8080'\n env_file:\n - .env\n environment:\n - TZ=UTC\n #- BASE_PATH=\n - LOG_LEVEL=warn\n - MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - ANYLANG_AUTO_MODELS=\n - ANYLANG_USER_AGENT=\n - ANYLANG_FREE_DELAY_MS=1000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: [ 'CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1' ]\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "96c116c232202207b5308455bb2b23c1018ceae5": {"t": 1785754325.131451, "n": 1509, "h": "410bc278bc5a4d4c", "c": "services:\n microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n stop_grace_period: 30s\n user: '1000:1000'\n ports:\n - '8080:8080'\n env_file:\n - .env\n environment:\n - TZ=UTC\n #- BASE_PATH=\n - LOG_LEVEL=warn\n - MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - ANYLANG_AUTO_MODELS=\n - ANYLANG_USER_AGENT=\n - ANYLANG_FREE_DELAY_MS=1000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: [ 'CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1' ]\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "120fddbb27f75727322771654804de4c2c84c78c": {"t": 1785754327.5472772, "n": 1482, "h": "8f40a69564e29477", "c": "services:\n microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n stop_grace_period: 30s\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n #- BASE_PATH=\n - LOG_LEVEL=warn\n - MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - ANYLANG_AUTO_MODELS=\n - ANYLANG_USER_AGENT=\n - ANYLANG_FREE_DELAY_MS=1000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: [ 'CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1' ]\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "41f514aba7fcd1a4b431e1ca791187e8ab32f824": {"t": 1785754331.1062157, "n": 1455, "h": "77ea9aadb2f6275c", "c": "services:\n microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n #- BASE_PATH=\n - LOG_LEVEL=warn\n - MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - ANYLANG_AUTO_MODELS=\n - ANYLANG_USER_AGENT=\n - ANYLANG_FREE_DELAY_MS=1000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: [ 'CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1' ]\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "023db59df5c1f92c1f4ebd5d1aa5716f1480075d": {"t": 1785754332.6171494, "n": 1461, "h": "b0c13e06a4346c4e", "c": "services:\n microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - ANYLANG_AUTO_MODELS=\n - ANYLANG_USER_AGENT=\n - ANYLANG_FREE_DELAY_MS=1000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: [ 'CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1' ]\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "00a90081b3322edb1ac6806061c75a0e25260588": {"t": 1785754334.7069285, "n": 1477, "h": "c620fc6b11c2e0ac", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - ANYLANG_AUTO_MODELS=\n - ANYLANG_USER_AGENT=\n - ANYLANG_FREE_DELAY_MS=1000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "0f6237f645c86a95c397ab7878f2277edc3cfaa9": {"t": 1785754336.109136, "n": 1385, "h": "76164bce10684584", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "eef911c027eb400cbe3266095c6376354d166448": {"t": 1785754337.3182392, "n": 1393, "h": "19ef15eddb8c9487", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - DEFAULT_MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=50\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "9712c83bd8fcd0a20e9f630351ac42466bff56c6": {"t": 1785754338.9690077, "n": 1393, "h": "03ef1490ed767a59", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - DEFAULT_MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=60\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=auto\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "d7be8b27910500a84ffab7cf40d3c58dab48abc7": {"t": 1785754340.1583755, "n": 1395, "h": "2a936fd5a1c8cc2f", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - DEFAULT_MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=anylang\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=60\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - ANYLANG_DEFAULT_MODEL=google\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_API_KEY=\n - YANDEX_TRANSLATE_FOLDER_ID=\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "75b7b8fcf816e945afcb146de38e9729d7c898cb": {"t": 1785754341.4492402, "n": 1287, "h": "f85e7092c896ffaf", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - DEFAULT_MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=google\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=60\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n #- LLM_SYSTEM_PROMPT=\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_APPLICATION_CREDENTIALS_JSON=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_API_BASE_URL=https://api.deepseek.com\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_API_BASE_URL=https://openrouter.ai/api/v1\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n - LIBRETRANSLATE_API_URL=http://libretranslate:8080\n - LIBRETRANSLATE_API_KEY=\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "740c4045dd9570f35948a33a2c28c52ae89a80f6": {"t": 1785754342.5763414, "n": 1068, "h": "423ed484e0395edc", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - DEFAULT_MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=google\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=60\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - GOOGLE_PROJECT_ID=\n - GOOGLE_LOCATION=global\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n healthcheck:\n test: [ 'CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1' ]\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "3b80eb31108648710c8c0474f962c4a20577c41e": {"t": 1785754344.406266, "n": 1008, "h": "5cde16b9800d6cab", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - DEFAULT_MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=google\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=60\n - DEFAULT_RETRY_MAX_ATTEMPTS=3\n - DEFAULT_RETRY_INITIAL_DELAY_MS=1000\n - DEFAULT_RETRY_MAX_DELAY_MS=5000\n - GOOGLE_APPLICATION_CREDENTIALS=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "c562dbaa4d7f741e08bf91aa024f4a5be220029a": {"t": 1785754345.7516718, "n": 889, "h": "1fd331bde3cf09e2", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n - TRANSLATE_MAX_TEXT_LENGTH=100000\n - DEFAULT_PROVIDER=google\n - ALLOWED_PROVIDERS=\n - REQUEST_TIMEOUT_SEC=60\n - GOOGLE_APPLICATION_CREDENTIALS=\n - DEEPL_AUTH_KEY=\n - DEEPSEEK_API_KEY=\n - DEEPSEEK_DEFAULT_MODEL=deepseek-chat\n - OPENROUTER_API_KEY=\n - OPENROUTER_DEFAULT_MODEL=openrouter/auto\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "4a8dfbf02b6d698ae9a9b6e8bef5ad748a33a4c9": {"t": 1785754346.9617321, "n": 546, "h": "62e706b5a0ec1ce0", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:8080'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:8080/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "eecb2cacf7b36434f311da02340aaa65be9c6294": {"t": 1785754348.260133, "n": 542, "h": "3247d1034aee1225", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n restart: unless-stopped\n user: '1000:1000'\n ports:\n - '8080:80'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:80/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "9177ff61f83e46c8f61a088f7ea362136363f559": {"t": 1785754349.664632, "n": 520, "h": "b3943da48f4d6432", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n ports:\n - '8080:80'\n environment:\n - TZ=UTC\n - API_BASE_PATH=api\n - LOG_LEVEL=warn\n restart: unless-stopped\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:80/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "4f3f3febc4f3505c1b461ee64aab150830a6542a": {"t": 1785754350.8691428, "n": 686, "h": "68f816ea06f916ec", "c": "services:\n translate-gateway-microservice:\n image: ghcr.io/bozonx/translate-gateway-microservice:latest\n container_name: translate-gateway-microservice\n hostname: translate-gateway-microservice\n ports:\n - '8080:80'\n environment:\n # Basic app settings\n - NODE_ENV=production\n - LISTEN_HOST=0.0.0.0\n - LISTEN_PORT=80\n - TZ=UTC\n\n # API prefix\n - API_BASE_PATH=api\n - API_VERSION=v1\n\n # Logging\n - LOG_LEVEL=warn\n restart: unless-stopped\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:80/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}, "b3eac10e0370da3e62c02cb1561ceb8b4ecabb2b": {"t": 1785754352.1949475, "n": 638, "h": "ca9e62edd518d2dd", "c": "services:\n nestjs-boilerplate:\n image: ghcr.io/bozonx/nestjs-boilerplate:latest\n container_name: nestjs-boilerplate\n hostname: nestjs-boilerplate\n ports:\n - '8080:80'\n environment:\n # Basic app settings\n - NODE_ENV=production\n - LISTEN_HOST=0.0.0.0\n - LISTEN_PORT=80\n - TZ=UTC\n\n # API prefix\n - API_BASE_PATH=api\n - API_VERSION=v1\n\n # Logging\n - LOG_LEVEL=warn\n restart: unless-stopped\n healthcheck:\n test: ['CMD-SHELL', 'wget -qO- http://127.0.0.1:80/api/v1/health || exit 1']\n interval: 30s\n timeout: 3s\n retries: 3\n start_period: 5s\n"}}}}