mirror of
https://github.com/docker/awesome-compose.git
synced 2025-04-26 02:38:07 +02:00
Added nginx-aspnet-mysql implementation
Signed-off-by: GitHub <noreply@github.com>
This commit is contained in:
parent
a42a8531ab
commit
054de29c32
8 changed files with 232 additions and 0 deletions
17
nginx-aspnet-mysql/backend/Dockerfile
Executable file
17
nginx-aspnet-mysql/backend/Dockerfile
Executable file
|
@ -0,0 +1,17 @@
|
|||
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:5.0 as base
|
||||
WORKDIR /app
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
|
||||
COPY . /src
|
||||
WORKDIR /src
|
||||
RUN ls
|
||||
RUN dotnet build "aspnetapp.csproj" -c Release -o /app/build
|
||||
|
||||
FROM build AS publish
|
||||
RUN dotnet publish "aspnetapp.csproj" -c Release -o /app/publish
|
||||
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
|
84
nginx-aspnet-mysql/backend/Program.cs
Normal file
84
nginx-aspnet-mysql/backend/Program.cs
Normal file
|
@ -0,0 +1,84 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
using MySql.Data;
|
||||
using MySql.Data.MySqlClient;
|
||||
|
||||
class Program
|
||||
{
|
||||
public static void Main(string[] args) => WebHost.CreateDefaultBuilder(args)
|
||||
.Configure(async app =>
|
||||
{
|
||||
app.UseRouting();
|
||||
|
||||
string password = File.ReadAllText("/run/secrets/db-password");
|
||||
string connectionString = $"server=db;user=root;database=example;port=3306;password={password}";
|
||||
|
||||
app.UseEndpoints(e =>
|
||||
{
|
||||
e.MapGet("/", context => {
|
||||
using MySqlConnection connection = new MySqlConnection(connectionString);
|
||||
var titles = new List<string>();
|
||||
|
||||
try
|
||||
{
|
||||
Console.WriteLine("Connecting to MySQL...");
|
||||
connection.Open();
|
||||
|
||||
string sql = "SELECT title FROM blog";
|
||||
using var cmd = new MySqlCommand(sql, connection);
|
||||
using MySqlDataReader reader = cmd.ExecuteReader();
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
titles.Add(reader.GetString(0));
|
||||
}
|
||||
reader.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
context.Response.StatusCode = 500;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
connection.Close();
|
||||
|
||||
context.Response.StatusCode = 200;
|
||||
context.Response.WriteAsJsonAsync(titles);
|
||||
|
||||
return Task.CompletedTask;
|
||||
});
|
||||
});
|
||||
Prepare(connectionString);
|
||||
|
||||
}).Build().Run();
|
||||
|
||||
private static void Prepare(string connectionString)
|
||||
{
|
||||
using MySqlConnection connection = new MySqlConnection(connectionString);
|
||||
|
||||
connection.Open();
|
||||
using var transation = connection.BeginTransaction();
|
||||
|
||||
using MySqlCommand cmd1 = new MySqlCommand("DROP TABLE IF EXISTS blog", connection, transation);
|
||||
cmd1.ExecuteNonQuery();
|
||||
|
||||
using MySqlCommand cmd2 = new MySqlCommand("CREATE TABLE IF NOT EXISTS blog (id int NOT NULL AUTO_INCREMENT, title varchar(255), PRIMARY KEY (id))", connection, transation);
|
||||
cmd2.ExecuteNonQuery();
|
||||
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
using MySqlCommand insertCommand = new MySqlCommand( $"INSERT INTO blog (title) VALUES ('Blog post #{i}');", connection, transation);
|
||||
insertCommand.ExecuteNonQuery();
|
||||
}
|
||||
transation.Commit();
|
||||
connection.Close();
|
||||
}
|
||||
}
|
8
nginx-aspnet-mysql/backend/aspnetapp.csproj
Normal file
8
nginx-aspnet-mysql/backend/aspnetapp.csproj
Normal file
|
@ -0,0 +1,8 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MySql.Data" Version="8.0.23" />
|
||||
</ItemGroup>
|
||||
</Project>
|
Loading…
Add table
Add a link
Reference in a new issue