diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..9834254 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,49 @@ +services: + # Web App Service + webapp: + build: + context: . + dockerfile: Dockerfile + container_name: webapp + restart: unless-stopped + networks: + - webnet + labels: + - "traefik.enable=true" + - "traefik.http.routers.webapp.rule=Host(`duooomi.com`)" + - "traefik.http.routers.webapp.entrypoints=websecure" + - "traefik.http.routers.webapp.tls.certresolver=myresolver" + - "traefik.http.services.webapp.loadbalancer.server.port=5173" + expose: + - "5173" + + # Traefik Reverse Proxy + traefik: + image: traefik:v3.0 + container_name: traefik + restart: unless-stopped + command: + - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + - "--entrypoints.websecure.address=:443" + - "--certificatesresolvers.myresolver.acme.tlschallenge=true" + - "--certificatesresolvers.myresolver.acme.email=admin@duooomi.com" + - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" + ports: + - "80:80" + - "443:443" + - "8080:8080" # Traefik dashboard + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - "./letsencrypt:/letsencrypt" + networks: + - webnet + +networks: + webnet: + driver: bridge + +volumes: + letsencrypt: \ No newline at end of file