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 volumes: webapp: services: sia: build: context: ./docker/sia dockerfile: Dockerfile args: branch: v1.5.4 container_name: sia restart: unless-stopped logging: *default-logging environment: - SIA_MODULES=gctwr env_file: - .env volumes: - ./docker/data/sia:/sia-data networks: shared: ipv4_address: 10.10.10.10 expose: - 9980 caddy: build: context: ./docker/caddy dockerfile: Dockerfile container_name: caddy restart: unless-stopped logging: *default-logging env_file: - .env volumes: - ./docker/data/caddy/data:/data - ./docker/data/caddy/config:/config - ./docker/caddy/Caddyfile:/etc/caddy/Caddyfile networks: shared: ipv4_address: 10.10.10.20 ports: - "80:80" - "443:443" depends_on: - nginx nginx: build: context: ./docker/nginx dockerfile: Dockerfile container_name: nginx restart: unless-stopped logging: *default-logging env_file: - .env volumes: - ./docker/nginx/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf:ro - ./docker/nginx/conf.d:/etc/nginx/conf.d:ro - ./docker/data/nginx/cache:/data/nginx/cache - ./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 - webapp:/var/www/webportal:ro networks: shared: ipv4_address: 10.10.10.30 expose: - 80 depends_on: - sia - health-check - handshake-api webapp: build: context: ./packages/webapp dockerfile: Dockerfile container_name: webapp restart: unless-stopped logging: *default-logging tty: true volumes: - webapp:/usr/app/public handshake: build: context: ./docker/handshake dockerfile: Dockerfile container_name: handshake restart: unless-stopped logging: *default-logging environment: - HSD_LOG_CONSOLE=false - HSD_HTTP_HOST=0.0.0.0 - HSD_NETWORK=main - HSD_PORT=12037 env_file: - .env volumes: - ./docker/data/handshake/.hsd:/root/.hsd networks: shared: ipv4_address: 10.10.10.40 expose: - 12037 handshake-api: build: context: ./packages/handshake-api dockerfile: Dockerfile 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 health-check: build: context: ./packages/health-check dockerfile: Dockerfile 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 environment: - HOSTNAME=0.0.0.0 - PORTAL_URL=http://nginx - STATE_DIR=/usr/app/state expose: - 3100 depends_on: - handshake - handshake-api mongo: image: mongo:4.4.1 command: --keyFile=/data/mgkey --replSet=skynet container_name: mongo restart: unless-stopped logging: *default-logging volumes: - ./docker/data/mongo/db:/data/db - ./docker/data/mongo/mgkey:/data/mgkey:rw networks: shared: ipv4_address: 10.10.10.70 ports: - "27017:27017"