70 lines
2.3 KiB
Django/Jinja
70 lines
2.3 KiB
Django/Jinja
# THIS FILE IS AUTO-GENERATED BY generate_envoy_config.py
|
|
# DO NOT EDIT MANUALLY.
|
|
#
|
|
# It contains the service definitions for the camoufox instances
|
|
# and adds the necessary dependencies to the main services.
|
|
services:
|
|
{% for proxy in camoufox_proxies %}
|
|
{% set proxy_port = _get_port_from_proxy_url(proxy.url) | int %}
|
|
{% set container_base_port = camoufox_port + loop.index0 * worker_count %}
|
|
{% set host_base_port = container_base_port %}
|
|
camoufox-{{ proxy_port }}-{{ loop.index }}:
|
|
build:
|
|
context: ../camoufox
|
|
dockerfile: Dockerfile
|
|
args:
|
|
VNC_PASSWORD: "{{ vnc_password }}"
|
|
image: camoufox:latest
|
|
container_name: ytdlp-ops-camoufox-{{ proxy_port }}-{{ loop.index }}-1
|
|
restart: unless-stopped
|
|
shm_size: '2gb' # Mitigates browser crashes due to shared memory limitations
|
|
ports:
|
|
- "{{ host_base_port }}-{{ host_base_port + worker_count - 1 }}:{{ container_base_port }}-{{ container_base_port + worker_count - 1 }}"
|
|
environment:
|
|
- DISPLAY=:99
|
|
- MOZ_HEADLESS_STACKSIZE=2097152
|
|
- CAMOUFOX_MAX_MEMORY_MB=2048
|
|
- CAMOUFOX_MAX_CONCURRENT_CONTEXTS=8
|
|
- CAMOUFOX_RESTART_THRESHOLD_MB=1500
|
|
volumes:
|
|
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
|
- camoufox-data-{{ proxy_port }}-{{ loop.index }}:/app/context-data
|
|
- camoufox-browser-cache:/root/.cache/ms-playwright # Persist browser binaries
|
|
command: [
|
|
"--ws-host", "0.0.0.0",
|
|
"--port", "{{ container_base_port }}",
|
|
"--num-instances", "{{ worker_count }}",
|
|
"--ws-path", "mypath",
|
|
"--proxy-url", "{{ proxy.url }}",
|
|
"--headless",
|
|
"--monitor-resources",
|
|
"--memory-restart-threshold", "1800",
|
|
"--preferences", "layers.acceleration.disabled=true,dom.ipc.processCount=2,media.memory_cache_max_size=102400,browser.cache.memory.capacity=102400"
|
|
]
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 2.5G
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "100m"
|
|
max-file: "3"
|
|
networks:
|
|
- proxynet
|
|
{% endfor %}
|
|
|
|
volumes:
|
|
{% for proxy in camoufox_proxies %}
|
|
{% set proxy_port = _get_port_from_proxy_url(proxy.url) | int %}
|
|
camoufox-data-{{ proxy_port }}-{{ loop.index }}:
|
|
{% endfor %}
|
|
{% if camoufox_proxies %}
|
|
camoufox-browser-cache:
|
|
{% endif %}
|
|
|
|
networks:
|
|
proxynet:
|
|
name: airflow_proxynet
|
|
external: true
|