version: "3.7" x-logging: &default-logging driver: "json-file" options: max-size: "200k" max-file: "10" networks: default: ipam: config: - subnet: 10.10.0.0/24 volumes: adguard: services: ng: build: context: dockerfile dockerfile: doh.dockerfile volumes: - ./config/.profile:/root/.bashrc:ro - ./config/nginx.conf:/etc/nginx/nginx.conf - ./config/nginx_default.conf:/nginx_default.conf - ./scripts/start_ng.sh:/start_ng.sh - ./certs/:/certs/ - ./ssh/:/ssh/ - ./logs/:/logs/ ports: - 80:80 - 443:443 hostname: nginx depends_on: - unit - ad - ss environment: TZ: ${TZ} SSPORT: ${SSPORT} stop_grace_period: 1s command: ["/bin/sh", "/start_ng.sh"] networks: default: ipv4_address: 10.10.0.2 logging: *default-logging unit: build: dockerfile: dockerfile/php.dockerfile volumes: - ./config/.profile:/root/.bashrc:ro - ./config/php.ini:/usr/local/etc/php/php.ini - ./config/clients.json:/config/clients.json - ./config/pac.json:/config/pac.json - ./config/unit.json:/config/unit.json - ./config/AdGuardHome.yaml:/config/AdGuardHome.yaml - ./config/nginx.conf:/config/nginx.conf - ./config/nginx_default.conf:/config/nginx_default.conf - ./config/ssserver.json:/config/ssserver.json - ./config/sslocal.json:/config/sslocal.json - ./certs/:/certs/ - type: volume target: /config/adguard source: adguard - ./ssh/:/ssh/ - ./app:/app - ./logs/:/logs/ - ./scripts/start_unit.sh:/start_unit.sh environment: TZ: ${TZ} ADDRESS: ${WGADDRESS} WGPORT: ${WGPORT} SSPORT: ${SSPORT} hostname: unit restart: unless-stopped stop_grace_period: 1s command: ["/bin/sh", "/start_unit.sh"] working_dir: /app networks: default: ipv4_address: 10.10.0.7 extra_hosts: - "host.docker.internal:host-gateway" logging: *default-logging proxy: build: dockerfile: dockerfile/shadowsocks.dockerfile args: RELEASE: ${RELEASE} SYSTEM: ${SYSTEM} volumes: - ./config/.profile:/root/.bashrc:ro - ./config/sslocal.json:/config.json - ./ssh:/ssh - ./scripts/start_proxy.sh:/start_proxy.sh hostname: proxy depends_on: - unit networks: default: ipv4_address: 10.10.0.3 environment: TZ: ${TZ} SSPORT: ${SSPORT} stop_grace_period: 1s command: ["/bin/sh", "/start_proxy.sh"] logging: *default-logging wg: build: dockerfile: dockerfile/wireguard.dockerfile args: RELEASE: ${RELEASE} SYSTEM: ${SYSTEM} volumes: - ./config/.profile:/root/.bashrc:ro - ./config/wg0.conf:/etc/wireguard/wg0.conf - ./scripts/start_wg.sh:/start_wg.sh - ./scripts/reset_wg.sh:/reset_wg.sh - ./ssh:/ssh hostname: wireguard depends_on: - unit ports: - ${WGPORT}:${WGPORT}/udp environment: TZ: ${TZ} WGPORT: ${WGPORT} ADDRESS: ${WGADDRESS} cap_add: - NET_ADMIN stop_grace_period: 1s command: ["/bin/sh", "/start_wg.sh"] networks: default: ipv4_address: 10.10.0.4 logging: *default-logging ad: build: dockerfile: dockerfile/adguard.dockerfile args: RELEASE: ${RELEASE} SYSTEM: ${SYSTEM} volumes: - ./config/.profile:/root/.bashrc:ro - type: volume target: /opt/adguardhome source: adguard - ./ssh:/ssh - ./logs/:/logs/ - ./scripts/start_ad.sh:/start_ad.sh hostname: adguard depends_on: - unit environment: TZ: ${TZ} stop_grace_period: 1s networks: default: ipv4_address: 10.10.0.5 command: ["/bin/sh", "/start_ad.sh"] logging: *default-logging ss: build: dockerfile: dockerfile/shadowsocks.dockerfile args: RELEASE: ${RELEASE} SYSTEM: ${SYSTEM} volumes: - ./config/.profile:/root/.bashrc:ro - ./config/ssserver.json:/config.json - ./ssh:/ssh - ./scripts/start_ss.sh:/start_ss.sh hostname: shadowsocks depends_on: - unit ports: - ${SSPORT}:${SSPORT}/tcp - ${SSPORT}:${SSPORT}/udp environment: TZ: ${TZ} SSPORT: ${SSPORT} stop_grace_period: 1s command: ["/bin/sh", "/start_ss.sh"] networks: default: ipv4_address: 10.10.0.6 logging: *default-logging