diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..3729ff0cd
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,25 @@
+**/.classpath
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
\ No newline at end of file
diff --git a/QQBotHub.sln b/QQBotHub.sln
index d4cac97c7..c2caa0273 100644
--- a/QQBotHub.sln
+++ b/QQBotHub.sln
@@ -7,7 +7,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{BDFD03E4-0A9
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QQBotPlugin", "src\QQBotPlugin\QQBotPlugin.csproj", "{1A6CAD95-2DED-42C0-BA8E-C8BA31E6AE74}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QQBotHub.Web", "src\QQBotHub.Web\QQBotHub.Web.csproj", "{30B29087-4E84-4C67-BE3A-1CA8AB47B416}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QQBotHub.Web", "src\QQBotHub.Web\QQBotHub.Web.csproj", "{30B29087-4E84-4C67-BE3A-1CA8AB47B416}"
+EndProject
+Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{E4815DEC-037C-4781-900A-6D8005A2F33B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -23,6 +25,10 @@ Global
{30B29087-4E84-4C67-BE3A-1CA8AB47B416}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30B29087-4E84-4C67-BE3A-1CA8AB47B416}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30B29087-4E84-4C67-BE3A-1CA8AB47B416}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E4815DEC-037C-4781-900A-6D8005A2F33B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E4815DEC-037C-4781-900A-6D8005A2F33B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E4815DEC-037C-4781-900A-6D8005A2F33B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E4815DEC-037C-4781-900A-6D8005A2F33B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/docker-compose.dcproj b/docker-compose.dcproj
new file mode 100644
index 000000000..ab4d144d1
--- /dev/null
+++ b/docker-compose.dcproj
@@ -0,0 +1,18 @@
+
+
+
+ 2.1
+ Linux
+ e4815dec-037c-4781-900a-6d8005a2f33b
+ LaunchBrowser
+ {Scheme}://localhost:{ServicePort}/swagger
+ qqbothub.web
+
+
+
+ docker-compose.yml
+
+
+
+
+
\ No newline at end of file
diff --git a/docker-compose.override.yml b/docker-compose.override.yml
new file mode 100644
index 000000000..9769ab75b
--- /dev/null
+++ b/docker-compose.override.yml
@@ -0,0 +1,8 @@
+version: '3.4'
+
+services:
+ qqbothub.web:
+ environment:
+ - ASPNETCORE_ENVIRONMENT=Development
+ ports:
+ - "80"
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 000000000..0ba7ea3b4
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,8 @@
+version: '3.4'
+
+services:
+ qqbothub.web:
+ image: ${DOCKER_REGISTRY-}qqbothubweb
+ build:
+ context: .
+ dockerfile: src/QQBotHub.Web/Dockerfile
diff --git a/src/QQBotHub.Web/Dockerfile b/src/QQBotHub.Web/Dockerfile
new file mode 100644
index 000000000..ef5f15dea
--- /dev/null
+++ b/src/QQBotHub.Web/Dockerfile
@@ -0,0 +1,21 @@
+#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
+
+FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
+WORKDIR /app
+EXPOSE 80
+
+FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
+WORKDIR /src
+COPY ["src/QQBotHub.Web/QQBotHub.Web.csproj", "src/QQBotHub.Web/"]
+RUN dotnet restore "src/QQBotHub.Web/QQBotHub.Web.csproj"
+COPY . .
+WORKDIR "/src/src/QQBotHub.Web"
+RUN dotnet build "QQBotHub.Web.csproj" -c Release -o /app/build
+
+FROM build AS publish
+RUN dotnet publish "QQBotHub.Web.csproj" -c Release -o /app/publish
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "QQBotHub.Web.dll"]
diff --git a/src/QQBotHub.Web/Properties/launchSettings.json b/src/QQBotHub.Web/Properties/launchSettings.json
index af9dd0906..48faea647 100644
--- a/src/QQBotHub.Web/Properties/launchSettings.json
+++ b/src/QQBotHub.Web/Properties/launchSettings.json
@@ -1,4 +1,4 @@
-{
+{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
@@ -11,13 +11,13 @@
"profiles": {
"QQBot.Web": {
"commandName": "Project",
- "dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
- "applicationUrl": "http://localhost:5193",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
- }
+ },
+ "applicationUrl": "http://localhost:5193",
+ "dotnetRunMessages": true
},
"IIS Express": {
"commandName": "IISExpress",
@@ -26,6 +26,12 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
+ },
+ "Docker": {
+ "commandName": "Docker",
+ "launchBrowser": true,
+ "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
+ "publishAllPorts": true
}
}
-}
+}
\ No newline at end of file
diff --git a/src/QQBotHub.Web/QQBotHub.Web.csproj b/src/QQBotHub.Web/QQBotHub.Web.csproj
index db20083df..a4b94bd10 100644
--- a/src/QQBotHub.Web/QQBotHub.Web.csproj
+++ b/src/QQBotHub.Web/QQBotHub.Web.csproj
@@ -5,10 +5,14 @@
enable
enable
True
+ ..\..\docker-compose.dcproj
+ Linux
+ ..\..
+