mirror of
https://github.com/Dokploy/templates.git
synced 2026-06-15 20:25:24 +02:00
* feat: Add imgproxy template * fix: Configure docker-compose to match requirements * fix: Process meta * fix: Change logo name * fix: Remove incorrect mounts * fix: Expose 80 port instead of direct mapping * fix: Change nginx cache keys default zone size and correct format negotiation * fix: Escaping
77 lines
2.9 KiB
YAML
77 lines
2.9 KiB
YAML
version: "3.8"
|
|
services:
|
|
imgproxy:
|
|
image: darthsim/imgproxy:v3.30.1
|
|
restart: unless-stopped
|
|
environment:
|
|
IMGPROXY_KEY: ${IMGPROXY_KEY}
|
|
IMGPROXY_SALT: ${IMGPROXY_SALT}
|
|
IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION:-true}
|
|
IMGPROXY_ENFORCE_WEBP: ${IMGPROXY_ENFORCE_WEBP:-true}
|
|
IMGPROXY_TTL: ${IMGPROXY_TTL:-30600}
|
|
IMGPROXY_DEVELOPMENT_ERRORS_MODE: ${IMGPROXY_DEVELOPMENT_ERRORS_MODE:-false}
|
|
IMGPROXY_READ_TIMEOUT: ${IMGPROXY_READ_TIMEOUT:-10}
|
|
IMGPROXY_WRITE_TIMEOUT: ${IMGPROXY_WRITE_TIMEOUT:-10}
|
|
IMGPROXY_KEEP_ALIVE_TIMEOUT: ${IMGPROXY_KEEP_ALIVE_TIMEOUT:-10}
|
|
IMGPROXY_DOWNLOAD_TIMEOUT: ${IMGPROXY_DOWNLOAD_TIMEOUT:-5}
|
|
IMGPROXY_CONCURRENCY: ${IMGPROXY_CONCURRENCY:-}
|
|
IMGPROXY_MAX_CLIENTS: ${IMGPROXY_MAX_CLIENTS:-10}
|
|
IMGPROXY_SO_REUSEPORT: ${IMGPROXY_SO_REUSEPORT:-}
|
|
IMGPROXY_USER_AGENT: ${IMGPROXY_USER_AGENT:-}
|
|
IMGPROXY_USE_ETAG: ${IMGPROXY_USE_ETAG:-true}
|
|
IMGPROXY_QUALITY: ${IMGPROXY_QUALITY:-80}
|
|
IMGPROXY_ALLOWED_SOURCES: ${IMGPROXY_ALLOWED_SOURCES}
|
|
IMGPROXY_ALLOW_ORIGIN: ${IMGPROXY_ALLOW_ORIGIN:-*}
|
|
IMGPROXY_MAX_SRC_FILE_SIZE: ${IMGPROXY_MAX_SRC_FILE_SIZE:-20971520}
|
|
IMGPROXY_MAX_SRC_RESOLUTION: ${IMGPROXY_MAX_SRC_RESOLUTION:-50}
|
|
IMGPROXY_LOG_LEVEL: ${IMGPROXY_LOG_LEVEL:-error}
|
|
|
|
nginx:
|
|
image: nginx:1.28.2-alpine
|
|
restart: unless-stopped
|
|
expose:
|
|
- 80
|
|
environment:
|
|
NGINX_CACHE_LEVELS: ${NGINX_CACHE_LEVELS:-1:2}
|
|
NGINX_CACHE_KEYS_ZONE_SIZE: ${NGINX_CACHE_KEYS_ZONE_SIZE:-32m}
|
|
NGINX_CACHE_MAX_SIZE: ${NGINX_CACHE_MAX_SIZE:-500m}
|
|
NGINX_CACHE_INACTIVE: ${NGINX_CACHE_INACTIVE:-30d}
|
|
NGINX_CACHE_USE_TEMP_PATH: ${NGINX_CACHE_USE_TEMP_PATH:-off}
|
|
NGINX_CACHE_EXPIRES: ${NGINX_CACHE_EXPIRES:-30d}
|
|
depends_on:
|
|
- imgproxy
|
|
volumes:
|
|
- nginx-cache:/tmp/cache
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
cat <<EOF > /etc/nginx/conf.d/default.conf
|
|
proxy_cache_path /tmp/cache levels=$${NGINX_CACHE_LEVELS} keys_zone=my_cache:$${NGINX_CACHE_KEYS_ZONE_SIZE} max_size=$${NGINX_CACHE_MAX_SIZE} inactive=$${NGINX_CACHE_INACTIVE} use_temp_path=$${NGINX_CACHE_USE_TEMP_PATH};
|
|
|
|
server {
|
|
listen 80 default_server;
|
|
listen [::]:80 default_server;
|
|
|
|
location / {
|
|
expires $${NGINX_CACHE_EXPIRES};
|
|
access_log off;
|
|
set \$$handle_webp 0;
|
|
if (\$$http_accept ~* "image/webp") {
|
|
set \$$handle_webp 1;
|
|
}
|
|
proxy_cache my_cache;
|
|
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
|
proxy_cache_background_update on;
|
|
proxy_cache_lock on;
|
|
proxy_cache_key "\$$scheme\$$host\$$uri\$$handle_webp";
|
|
server_tokens off;
|
|
proxy_pass http://imgproxy:8080;
|
|
}
|
|
}
|
|
EOF
|
|
exec nginx -g 'daemon off;'
|
|
|
|
volumes:
|
|
nginx-cache:
|