From fbd5198409f4e4080d16ffbf6c0cb702257daebb Mon Sep 17 00:00:00 2001 From: Exil Productions Date: Wed, 10 Dec 2025 19:01:44 +0100 Subject: [PATCH] fixed docker setup --- .vscode/launch.json | 35 +++++++++ .vscode/tasks.json | 41 ++++++++++ PurrLobby/Properties/launchSettings.json | 12 --- PurrLobby/appsettings.json | 10 +-- compose.yaml | 98 +++++++++++++----------- 5 files changed, 132 insertions(+), 64 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json delete mode 100644 PurrLobby/Properties/launchSettings.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f50104d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,35 @@ +{ + "version": "0.2.0", + "configurations": [ + { + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md. + "name": ".NET Core Launch (web)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/PurrLobby/bin/Debug/net8.0/PurrLobby.dll", + "args": [], + "cwd": "${workspaceFolder}/PurrLobby", + "stopAtEntry": false, + // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser + "serverReadyAction": { + "action": "openExternally", + "pattern": "\\bNow listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..0f0416a --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/PurrLobby.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/PurrLobby.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/PurrLobby.sln" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/PurrLobby/Properties/launchSettings.json b/PurrLobby/Properties/launchSettings.json deleted file mode 100644 index ca0da48..0000000 --- a/PurrLobby/Properties/launchSettings.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "profiles": { - "PurrLobby": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:7443;http://localhost:5080" - } - } -} \ No newline at end of file diff --git a/PurrLobby/appsettings.json b/PurrLobby/appsettings.json index 5c63240..265370f 100644 --- a/PurrLobby/appsettings.json +++ b/PurrLobby/appsettings.json @@ -8,13 +8,9 @@ "AllowedHosts": "purrlobby.exil.dev", "Kestrel": { "Endpoints": { - "Https": { - "Url": "https://0.0.0.0:443", - "Certificate": { - "Path": "Certs/purrlobby.pem", - "KeyPath": "Certs/purrlobby.key" - } + "Http": { + "Url": "http://0.0.0.0:80" } } } -} \ No newline at end of file +} diff --git a/compose.yaml b/compose.yaml index 68adaca..022be3a 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,54 +1,62 @@ -# Comments are provided throughout this file to help you get started. -# If you need more help, visit the Docker Compose reference guide at -# https://docs.docker.com/go/compose-spec-reference/ +version: "3.9" -# Here the instructions define your application as a service called "server". -# This service is built from the Dockerfile in the current directory. -# You can add other services your application may depend on here, such as a -# database or a cache. For examples, see the Awesome Compose repository: -# https://github.com/docker/awesome-compose services: + traefik: + image: "traefik:v3.4" + container_name: "traefik" + restart: unless-stopped + networks: + - proxy + command: + - "--api.insecure=false" + - "--api.dashboard=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--providers.docker.network=proxy" + - "--entryPoints.web.address=:80" + - "--entryPoints.websecure.address=:443" + - "--entryPoints.websecure.http.tls=true" + - "--entryPoints.web.http.redirections.entryPoint.to=websecure" + - "--entryPoints.web.http.redirections.entryPoint.scheme=https" + + # Let's Encrypt ACME + - "--certificatesresolvers.le.acme.email=YOUR_EMAIL@example.com" # replace with your email + - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" + - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web" + + ports: + - "80:80" + - "443:443" + - "8080:8080" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + - "./letsencrypt:/letsencrypt" + - "./dynamic:/etc/traefik/dynamic:ro" + labels: + # Dashboard + - "traefik.enable=true" + - "traefik.http.routers.dashboard.rule=Host(`dashboard.purrlobby.exil.dev`)" + - "traefik.http.routers.dashboard.entrypoints=websecure" + - "traefik.http.routers.dashboard.service=api@internal" + - "traefik.http.routers.dashboard.tls=true" + - "traefik.http.routers.dashboard.tls.certresolver=le" + server: build: context: . target: final + container_name: "purrlobby" + restart: unless-stopped + networks: + - proxy labels: - "traefik.enable=true" - - "traefik.tcp.routers.purrlobby.entrypoints=websecure" - - "traefik.tcp.routers.purrlobby.rule=HostSNI(`purrlobby.exil.dev`)" - - "traefik.tcp.services.purrlobby.loadbalancer.server.port=443" - - -# The commented out section below is an example of how to define a PostgreSQL -# database that your application can use. `depends_on` tells Docker Compose to -# start the database before your application. The `db-data` volume persists the -# database data between container restarts. The `db-password` secret is used -# to set the database password. You must create `db/password.txt` and add -# a password of your choosing to it before running `docker compose up`. -# depends_on: -# db: -# condition: service_healthy -# db: -# image: postgres -# restart: always -# user: postgres -# secrets: -# - db-password -# volumes: -# - db-data:/var/lib/postgresql/data -# environment: -# - POSTGRES_DB=example -# - POSTGRES_PASSWORD_FILE=/run/secrets/db-password -# expose: -# - 5432 -# healthcheck: -# test: [ "CMD", "pg_isready" ] -# interval: 10s -# timeout: 5s -# retries: 5 -# volumes: -# db-data: -# secrets: -# db-password: -# file: db/password.txt + - "traefik.http.routers.purrlobby.entrypoints=websecure" + - "traefik.http.routers.purrlobby.rule=Host(`purrlobby.exil.dev`)" + - "traefik.http.routers.purrlobby.tls=true" + - "traefik.http.routers.purrlobby.tls.certresolver=le" + - "traefik.http.services.purrlobby.loadbalancer.server.port=80" +networks: + proxy: + name: proxy