services: ascii-art: container_name: ascii-art build: . restart: unless-stopped security_opt: - no-new-privileges:true cap_drop: - ALL read_only: true tmpfs: - /tmp networks: - traefik-public labels: - traefik.enable=true - traefik.docker.network=traefik-public # Primary domain - traefik.http.routers.ascii-art.rule=Host(`ascii.jeffemmett.com`) - traefik.http.routers.ascii-art.entrypoints=web - traefik.http.routers.ascii-art.priority=130 - traefik.http.routers.ascii-art.service=ascii-art # rSpace: root domain - traefik.http.routers.rcreate.rule=Host(`rcreate.online`) || Host(`www.rcreate.online`) - traefik.http.routers.rcreate.entrypoints=web - traefik.http.routers.rcreate.priority=130 - traefik.http.routers.rcreate.service=ascii-art # rSpace: wildcard subdomains ({space}.rcreate.online) - traefik.http.routers.rcreate-wildcard.rule=HostRegexp(`{sub:[a-z0-9-]+}.rcreate.online`) - traefik.http.routers.rcreate-wildcard.entrypoints=web - traefik.http.routers.rcreate-wildcard.priority=100 - traefik.http.routers.rcreate-wildcard.service=ascii-art # Service port - traefik.http.services.ascii-art.loadbalancer.server.port=8000 healthcheck: test: ["CMD-SHELL", "python3 -c 'import urllib.request; urllib.request.urlopen(\"http://127.0.0.1:8000/health\")'"] interval: 30s timeout: 10s retries: 3 start_period: 10s deploy: resources: limits: cpus: "2" memory: 512M networks: traefik-public: external: true