diff --git a/.dockerignore b/.dockerignore index 1ca1c3da4..5771a184e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,18 +1,19 @@ +.env **/.git -**/.github .gitattributes .gitignore +**/.github **/.vs **/.vscode -**/images -**/ops -codecov.yml .dockerignore docker-compose.yml docker-compose.*.yml -FilterLists.sln -*.DotSettings* -LICENSE +docker-compose.dcproj **/bin **/obj -**/node_modules \ No newline at end of file +**/.sln +**/node_modules +*.DotSettings* +LICENSE +**/images +**/ops \ No newline at end of file diff --git a/FilterLists.sln b/FilterLists.sln index 37aace757..4bcdb338e 100644 --- a/FilterLists.sln +++ b/FilterLists.sln @@ -39,6 +39,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CE4AB25B-550 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{041F9CFA-B6F7-4DEB-9441-829DE697B1BB}" EndProject +Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{B94A5BCD-3BE3-4FE4-AE48-ADCF904A22A4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -73,6 +75,10 @@ Global {DA34DED7-B352-4855-9C7B-9E3D983DBE2E}.Debug|Any CPU.Build.0 = Debug|Any CPU {DA34DED7-B352-4855-9C7B-9E3D983DBE2E}.Release|Any CPU.ActiveCfg = Release|Any CPU {DA34DED7-B352-4855-9C7B-9E3D983DBE2E}.Release|Any CPU.Build.0 = Release|Any CPU + {B94A5BCD-3BE3-4FE4-AE48-ADCF904A22A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B94A5BCD-3BE3-4FE4-AE48-ADCF904A22A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B94A5BCD-3BE3-4FE4-AE48-ADCF904A22A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B94A5BCD-3BE3-4FE4-AE48-ADCF904A22A4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index f6272f5f1..000000000 --- a/codecov.yml +++ /dev/null @@ -1,8 +0,0 @@ -coverage: - status: - project: - default: - enabled: no - patch: - default: - enabled: no diff --git a/docker-compose.tests.data.yml b/docker-compose.data.tests.yml similarity index 88% rename from docker-compose.tests.data.yml rename to docker-compose.data.tests.yml index e21a1d610..8910d8e33 100644 --- a/docker-compose.tests.data.yml +++ b/docker-compose.data.tests.yml @@ -1,5 +1,3 @@ -# For running data integration tests in FilterLists.Data.Tests - version: "3.7" services: diff --git a/docker-compose.dcproj b/docker-compose.dcproj new file mode 100644 index 000000000..565f51e9e --- /dev/null +++ b/docker-compose.dcproj @@ -0,0 +1,17 @@ + + + + 2.1 + Linux + b94a5bcd-3be3-4fe4-ae48-adcf904a22a4 + LaunchBrowser + {Scheme}://localhost:{ServicePort} + filterlists.api + + + + + + + + \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index f51c3c989..1b2a3900d 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,11 +1,9 @@ -# For running pre-build instances of all modules from Hub - version: "3.7" services: - FilterLists.Api: + api: image: collinbarrett/filterlists.api:latest - FilterLists.Web: + web: image: collinbarrett/filterlists.web:latest diff --git a/docker-compose.yml b/docker-compose.yml index 604f69574..551179741 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -# For building and running all modules - version: "3.7" services: diff --git a/src/FilterLists.Api/Dockerfile b/src/FilterLists.Api/Dockerfile index 35c59d55b..b769b62bc 100644 --- a/src/FilterLists.Api/Dockerfile +++ b/src/FilterLists.Api/Dockerfile @@ -1,56 +1,64 @@ # Context: . # Command: docker build -f src/FilterLists.Api/Dockerfile . -# prep runtime -FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-alpine as runtime -ENTRYPOINT ["dotnet", "FilterLists.Api.dll"] +# init base +FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-alpine as base ENV DataDirectory__Path "data" ENV ASPNETCORE_URLS "http://*:5000" EXPOSE 5000 +ENTRYPOINT ["dotnet", "FilterLists.Api.dll"] # init build FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine AS build # restore -WORKDIR /src/ -COPY src/FilterLists.Data/FilterLists.Data.csproj ./FilterLists.Data/ -COPY src/FilterLists.Services/FilterLists.Services.csproj ./FilterLists.Services/ -WORKDIR /src/FilterLists.Api/ -COPY src/FilterLists.Api/FilterLists.Api.csproj ./ +WORKDIR /src +COPY src/FilterLists.Data/FilterLists.Data.csproj FilterLists.Data/ +COPY src/FilterLists.Services/FilterLists.Services.csproj FilterLists.Services/ +WORKDIR /src/FilterLists.Api +COPY src/FilterLists.Api/FilterLists.Api.csproj . RUN dotnet restore # build -WORKDIR /src/ -COPY src/FilterLists.Data/. ./FilterLists.Data/ -COPY src/FilterLists.Services/. ./FilterLists.Services/ -WORKDIR /src/FilterLists.Api/ -COPY src/FilterLists.Api/. ./ +WORKDIR /src +COPY src/FilterLists.Data/. FilterLists.Data/ +COPY src/FilterLists.Services/. FilterLists.Services/ +WORKDIR /src/FilterLists.Api +COPY src/FilterLists.Api/. . RUN dotnet build -c Release --no-restore -# build data tests +# init Data.Tests FROM build AS test-data -WORKDIR /tests/FilterLists.Data.Tests/ -COPY tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj ./ -RUN dotnet restore -COPY tests/FilterLists.Data.Tests/. ./ -RUN dotnet build -c Release --no-restore -COPY data/. ./data/ ENTRYPOINT ["dotnet", "test"] -# build services tests -FROM build AS test-services -WORKDIR /tests/FilterLists.Services.Tests/ -COPY tests/FilterLists.Services.Tests/FilterLists.Services.Tests.csproj ./ +# restore Data.Tests +WORKDIR /tests/FilterLists.Data.Tests +COPY tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj . RUN dotnet restore -COPY tests/FilterLists.Services.Tests/. ./ + +# build Data.Tests +COPY tests/FilterLists.Data.Tests/. . RUN dotnet build -c Release --no-restore +COPY data/. data/ + +# init Services.Tests +FROM build AS test-services ENTRYPOINT ["dotnet", "test"] +# restore Services.Tests +WORKDIR /tests/FilterLists.Services.Tests +COPY tests/FilterLists.Services.Tests/FilterLists.Services.Tests.csproj . +RUN dotnet restore + +# build Services.Tests +COPY tests/FilterLists.Services.Tests/. . +RUN dotnet build -c Release --no-restore + # publish FROM build AS publish RUN dotnet publish -c Release -o out --no-restore --no-build -# run -FROM runtime as final -COPY --from=publish /src/FilterLists.Api/out ./ -COPY data/. ./data/ +# final +FROM base as final +COPY --from=publish /src/FilterLists.Api/out . +COPY data/. data/ diff --git a/src/FilterLists.Api/FilterLists.Api.csproj b/src/FilterLists.Api/FilterLists.Api.csproj index 1aab8c80b..193b6d430 100644 --- a/src/FilterLists.Api/FilterLists.Api.csproj +++ b/src/FilterLists.Api/FilterLists.Api.csproj @@ -18,6 +18,7 @@ https://github.com/collinbarrett/FilterLists false Exe + ..\..\docker-compose.dcproj