services: elevation: image: racemap/elevation-service:v2.1.0 build: context: . dockerfile: Dockerfile restart: unless-stopped # Run an init (tini) as PID 1 so it reaps the short-lived bash processes # the HEALTHCHECK spawns every interval; the elevation binary itself does # not reap children, so without this they accumulate as zombies. init: true mem_limit: ${MEMORY_LIMIT:-2G} environment: VIRTUAL_HOST: ${DOMAIN} VIRTUAL_PORT: 3000 LETSENCRYPT_HOST: ${DOMAIN} LETSENCRYPT_EMAIL: ${EMAIL} TILE_SET_CACHE: ${TILE_SET_CACHE:-} TILE_SET_PATH: ${TILE_SET_PATH:-} MAX_POST_SIZE: ${MAX_POST_SIZE:-} MAX_PARALLEL_PROCESSING: ${MAX_PARALLEL_PROCESSING:-} MAX_THREADS: ${MAX_THREADS:-} MAX_CONCURRENT_HANDLERS: ${MAX_CONCURRENT_HANDLERS:-} PORT: 3000 BIND: 0.0.0.0 RUST_LOG: ${RUST_LOG:-info} S3_ENDPOINT: ${S3_ENDPOINT:-} S3_BUCKET: ${S3_BUCKET:-} S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-} S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-} S3_REGION: ${S3_REGION:-} expose: - '3000' profiles: - production nginx-proxy: image: nginxproxy/nginx-proxy:1.7.1 container_name: nginx-proxy restart: unless-stopped ports: - '80:80' - '443:443' environment: TRUST_DOWNSTREAM_PROXY: false volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - certs:/etc/nginx/certs - html:/usr/share/nginx/html profiles: - production acme-companion: image: nginxproxy/acme-companion:2.6.0 container_name: nginx-proxy-acme restart: unless-stopped depends_on: - nginx-proxy environment: DEFAULT_EMAIL: ${EMAIL} ACME_CHALLENGE: DNS-01 NGINX_PROXY_CONTAINER: nginx-proxy ACMESH_DNS_API_CONFIG: |- DNS_API: dns_cf CF_Key: ${CF_API_KEY} CF_Email: ${CF_EMAIL} volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - certs:/etc/nginx/certs - html:/usr/share/nginx/html - acme:/etc/acme.sh profiles: - production volumes: certs: acme: html: