feat: добавить Image Gateway с кешем Souin

- добавлена сборка Caddy с Souin, Otter и NutsDB

- добавлена конфигурация dev, prod и test Docker Compose

- настроено кеширование через Otter L1 и NutsDB L2

- добавлены e2e-тесты Bun для кеша, restart и purge

- добавлена документация по запуску, API кеша и тестам
This commit is contained in:
2026-05-04 12:18:37 +03:00
commit 0751c4b469
26 changed files with 1608 additions and 0 deletions

71
docker-compose.test.yml Normal file
View File

@@ -0,0 +1,71 @@
services:
fixture:
image: oven/bun:1
working_dir: /app
command: ["bun", "tests/fixture/server.js"]
volumes:
- .:/app:ro
networks:
- gateway-test
imgproxy:
image: darthsim/imgproxy:latest
environment:
GODEBUG: http2client=0
IMGPROXY_WORKERS: 2
IMGPROXY_MAX_SRC_RESOLUTION: 20
IMGPROXY_USE_ETAG: "true"
IMGPROXY_ENABLE_VIDEO_THUMBNAILS: "false"
IMGPROXY_DOWNLOAD_TIMEOUT: 30
IMGPROXY_ALLOWED_SOURCES: ""
NO_PROXY: localhost,127.0.0.1,fixture,caddy,imgproxy
depends_on:
fixture:
condition: service_started
networks:
- gateway-test
caddy:
build:
context: .
dockerfile: Dockerfile.caddy
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-cache:/cache
environment:
IMGPROXY_UPSTREAM: imgproxy:8080
DOMAIN: ""
CADDY_PORT: 8888
ADMIN_USER: admin
ADMIN_PASS: ""
depends_on:
imgproxy:
condition: service_started
networks:
- gateway-test
tester:
image: oven/bun:1
working_dir: /app
volumes:
- .:/app:ro
environment:
GATEWAY_URL: http://caddy:8888
ADMIN_URL: http://caddy:2019
SOURCE_IMAGE_URL: http://fixture:8080/image.png
depends_on:
caddy:
condition: service_started
fixture:
condition: service_started
networks:
- gateway-test
networks:
gateway-test:
driver: bridge
volumes:
caddy-data:
caddy-cache: