From 0035ed14a8d08f7ae3ccb99b7b102740e1ebeee7 Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 21 Jul 2025 13:03:51 -0500 Subject: [PATCH 1/6] Updated DataContext Removed OnConfiguring(), as this is done in Program.cs now. --- FreeTubeSync/Database/DataContext.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/FreeTubeSync/Database/DataContext.cs b/FreeTubeSync/Database/DataContext.cs index 61b74f9..e4810d1 100644 --- a/FreeTubeSync/Database/DataContext.cs +++ b/FreeTubeSync/Database/DataContext.cs @@ -10,11 +10,6 @@ public class DataContext : DbContext } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - optionsBuilder.UseSqlite("Data Source=FreeTubeSync.db"); - } - protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() From 2746bd84ed14d07b1132bb0ea05a2750ee13f15c Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 21 Jul 2025 13:04:15 -0500 Subject: [PATCH 2/6] Moved Dockerfile Moved dockerfile into root Solution folder. --- Dockerfile | 25 +++++++++++++++++++++++++ FreeTubeSync/Dockerfile | 23 ----------------------- 2 files changed, 25 insertions(+), 23 deletions(-) create mode 100644 Dockerfile delete mode 100644 FreeTubeSync/Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6ceb29e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +USER $APP_UID +WORKDIR /app +EXPOSE 8080 + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["FreeTubeSync/FreeTubeSync.csproj", "FreeTubeSync/"] +RUN dotnet restore "FreeTubeSync/FreeTubeSync.csproj" +COPY . . +WORKDIR "/src/FreeTubeSync" +RUN dotnet build "./FreeTubeSync.csproj" -c $BUILD_CONFIGURATION -o /app/build + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./FreeTubeSync.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +RUN mkdir data +RUN chmod a+rw data +VOLUME /app/data +ENTRYPOINT ["dotnet", "FreeTubeSync.dll"] diff --git a/FreeTubeSync/Dockerfile b/FreeTubeSync/Dockerfile deleted file mode 100644 index 362d62c..0000000 --- a/FreeTubeSync/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base -USER $APP_UID -WORKDIR /app -EXPOSE 8080 -EXPOSE 8081 - -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build -ARG BUILD_CONFIGURATION=Release -WORKDIR /src -COPY ["FreeTubeSync2/FreeTubeSync2.csproj", "FreeTubeSync2/"] -RUN dotnet restore "FreeTubeSync2/FreeTubeSync2.csproj" -COPY . . -WORKDIR "/src/FreeTubeSync2" -RUN dotnet build "./FreeTubeSync2.csproj" -c $BUILD_CONFIGURATION -o /app/build - -FROM build AS publish -ARG BUILD_CONFIGURATION=Release -RUN dotnet publish "./FreeTubeSync2.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false - -FROM base AS final -WORKDIR /app -COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "FreeTubeSync2.dll"] From 035973238581eaecd9b3d4adfb361ca75b20e654 Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 21 Jul 2025 13:06:27 -0500 Subject: [PATCH 3/6] Updated Program Updated Program to have SQLite Configuration done through Connection Strings. Added auto migration for the database, if we get an exception, we create the database instead (As it doesn't exist.) --- FreeTubeSync/Program.cs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/FreeTubeSync/Program.cs b/FreeTubeSync/Program.cs index 6643e4a..8f93e25 100644 --- a/FreeTubeSync/Program.cs +++ b/FreeTubeSync/Program.cs @@ -1,13 +1,15 @@ using FreeTubeSync; using FreeTubeSync.Database; using FreeTubeSync.EndPoints; +using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -builder.Services.AddDbContext(); +builder.Services.AddDbContext(options => + options.UseSqlite(builder.Configuration.GetConnectionString("FreeTubeSync"))); builder.Services.AddScoped(typeof(IRepository<>), typeof(Repository<>)); @@ -21,4 +23,17 @@ app.MapProfileEndpoints(); app.MapSearchHistoryEndpoints(); app.MapSettingEndpoints(); +await using(var serviceScope = app.Services.CreateAsyncScope()) +await using (var dbContext = serviceScope.ServiceProvider.GetRequiredService()) +{ + try + { + await dbContext.Database.MigrateAsync(); + } + catch (Exception e) + { + await dbContext.Database.EnsureCreatedAsync(); + } +} + app.Run(); \ No newline at end of file From a5453c8191393c910a7cb391e5b368977e209c56 Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 21 Jul 2025 13:06:55 -0500 Subject: [PATCH 4/6] Updated App Settings Added FreeTubeSync database connection strings. --- FreeTubeSync/appsettings.Development.json | 3 +++ FreeTubeSync/appsettings.json | 3 +++ 2 files changed, 6 insertions(+) diff --git a/FreeTubeSync/appsettings.Development.json b/FreeTubeSync/appsettings.Development.json index 0c208ae..2bb5f2c 100644 --- a/FreeTubeSync/appsettings.Development.json +++ b/FreeTubeSync/appsettings.Development.json @@ -1,4 +1,7 @@ { + "ConnectionStrings": { + "FreeTubeSync": "Data Source=../data/FreeTubeSync.db" + }, "Logging": { "LogLevel": { "Default": "Information", diff --git a/FreeTubeSync/appsettings.json b/FreeTubeSync/appsettings.json index 10f68b8..cbd653d 100644 --- a/FreeTubeSync/appsettings.json +++ b/FreeTubeSync/appsettings.json @@ -1,4 +1,7 @@ { + "ConnectionStrings": { + "FreeTubeSync": "Data Source=/app/data/FreeTubeSync.db" + }, "Logging": { "LogLevel": { "Default": "Information", From 7090092565e42376c2052dfad7ab9fdbd38f074a Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 21 Jul 2025 13:07:21 -0500 Subject: [PATCH 5/6] Added to Dockerignore Added folders that do not need to be in docker. --- .dockerignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 38bece4..bb2c94f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -21,5 +21,7 @@ **/obj **/secrets.dev.yaml **/values.dev.yaml +**/*.db* +**/docker_data LICENSE -README.md \ No newline at end of file +README.md From 8c605ba902cdf5845de501e601391be0ecdda440 Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 21 Jul 2025 13:07:55 -0500 Subject: [PATCH 6/6] Updated Docker Compose Added docker compose to mount Volume for Data. --- compose.yaml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/compose.yaml b/compose.yaml index 2e88c89..9bb9544 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,7 +1,10 @@ services: - freetubesync2: - image: freetubesync2 + freetubesync: + image: freetubesync build: context: . - dockerfile: FreeTubeSync2/Dockerfile - + dockerfile: FreeTubeSync/Dockerfile + ports: + - "8080:8080" + volumes: + - ./docker_data:/data