version: "3.7" x-logging: &default-logging driver: json-file options: max-size: "10m" max-file: "3" networks: shared: ipam: driver: default config: - subnet: 10.10.10.0/24 services: sia: build: context: https://github.com/SkynetLabs/docker-skyd.git#main dockerfile: scratch/Dockerfile args: branch: portal-latest command: --disable-api-security --api-addr :9980 --modules gctwra container_name: sia restart: unless-stopped stop_grace_period: 5m logging: *default-logging environment: - SKYD_DISK_CACHE_ENABLED=${SKYD_DISK_CACHE_ENABLED:-true} - SKYD_DISK_CACHE_SIZE=${SKYD_DISK_CACHE_SIZE:-53690000000} # 50GB - SKYD_DISK_CACHE_MIN_HITS=${SKYD_DISK_CACHE_MIN_HITS:-3} - SKYD_DISK_CACHE_HIT_PERIOD=${SKYD_DISK_CACHE_HIT_PERIOD:-3600} # 1h env_file: - .env volumes: - ./docker/data/sia:/sia-data networks: shared: ipv4_address: 10.10.10.10 expose: - 9980 certbot: # replace this image with the image supporting your dns provider from # https://hub.docker.com/r/certbot/certbot and adjust CERTBOT_ARGS env variable # note: you will need to authenticate your dns request so consult the plugin docs # configuration https://eff-certbot.readthedocs.io/en/stable/using.html#dns-plugins # # ================================================================================= # example docker-compose.yml changes required for Cloudflare dns provider: # # image: certbot/dns-cloudflare # environment: # - CERTBOT_ARGS=--dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini # # create ./docker/data/certbot/cloudflare.ini file with the following content: # dns_cloudflare_api_token = # # make sure that the file has 0400 permissions with: # chmod 0400 ./docker/data/certbot/cloudflare.ini image: certbot/dns-route53:v1.29.0 entrypoint: sh /entrypoint.sh container_name: certbot restart: unless-stopped logging: *default-logging env_file: - .env environment: - CERTBOT_ARGS=--dns-route53 volumes: - ./docker/certbot/entrypoint.sh:/entrypoint.sh - ./docker/data/certbot:/etc/letsencrypt nginx: # uncomment "build" and comment out "image" to build from sources # build: # context: https://github.com/SkynetLabs/webportal-nginx.git#main # dockerfile: Dockerfile image: skynetlabs/webportal-nginx:0.5.0 container_name: nginx restart: unless-stopped logging: *default-logging env_file: - .env volumes: - ./docker/data/nginx/cache:/data/nginx/cache - ./docker/data/nginx/blocker:/data/nginx/blocker - ./docker/data/nginx/logs:/usr/local/openresty/nginx/logs - ./docker/data/nginx/skynet:/data/nginx/skynet:ro - ./docker/data/sia/apipassword:/data/sia/apipassword:ro - ./docker/data/certbot:/etc/letsencrypt networks: shared: ipv4_address: 10.10.10.30 ports: - "443:443" - "80:80" depends_on: - sia - handshake-api - dnslink-api - website website: # uncomment "build" and comment out "image" to build from sources # build: # context: https://github.com/SkynetLabs/webportal-website.git#main # dockerfile: Dockerfile image: skynetlabs/webportal-website:0.2.1 container_name: website restart: unless-stopped logging: *default-logging volumes: - ./docker/data/website/.cache:/usr/app/.cache - ./docker/data/website/.public:/usr/app/public env_file: - .env networks: shared: ipv4_address: 10.10.10.35 expose: - 9000 handshake: image: handshakeorg/hsd:4.0.2 command: --chain-migrate=3 --no-wallet --no-auth --compact-tree-on-init --network=main --http-host=0.0.0.0 container_name: handshake restart: unless-stopped logging: *default-logging volumes: - ./docker/data/handshake/.hsd:/root/.hsd networks: shared: ipv4_address: 10.10.10.40 expose: - 12037 handshake-api: # uncomment "build" and comment out "image" to build from sources # build: # context: https://github.com/SkynetLabs/webportal-handshake-api.git#main # dockerfile: Dockerfile image: skynetlabs/webportal-handshake-api:0.1.1 container_name: handshake-api restart: unless-stopped logging: *default-logging environment: - HOSTNAME=0.0.0.0 - HSD_HOST=handshake - HSD_NETWORK=main - HSD_PORT=12037 env_file: - .env networks: shared: ipv4_address: 10.10.10.50 expose: - 3100 depends_on: - handshake dnslink-api: # uncomment "build" and comment out "image" to build from sources # build: # context: https://github.com/SkynetLabs/webportal-dnslink-api.git#main # dockerfile: Dockerfile image: skynetlabs/webportal-dnslink-api:0.1.1 container_name: dnslink-api restart: unless-stopped logging: *default-logging networks: shared: ipv4_address: 10.10.10.55 expose: - 3100 health-check: # uncomment "build" and comment out "image" to build from sources # build: # context: https://github.com/SkynetLabs/webportal-health-check.git#main # dockerfile: Dockerfile image: skynetlabs/webportal-health-check:0.3.0 container_name: health-check restart: unless-stopped logging: *default-logging volumes: - ./docker/data/health-check/state:/usr/app/state networks: shared: ipv4_address: 10.10.10.60 env_file: - .env environment: - HOSTNAME=0.0.0.0 - STATE_DIR=/usr/app/state expose: - 3100