mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-19 23:32:49 +08:00
Dockerfile build (#727)
* Added Dockerfile run configuration and fixed manual test project to run appropriately * Finished updates for Docker build and management of project through docker commands. Any of the dotnet CLI commands accessible through 'builder' container and default run is manual test project * Added a docker-compose.yaml files to support commands: docker-compose run tests, docker-compose run benchmarks, docker-compose run manual-test
This commit is contained in:
parent
3c4808a1eb
commit
ac211886f1
2
.dockerignore
Normal file
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*/*/bin
|
||||||
|
*/*/obj
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -252,3 +252,6 @@ _templates/
|
|||||||
|
|
||||||
# JetBrains Rider
|
# JetBrains Rider
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
|
# Test Results
|
||||||
|
*.trx
|
||||||
|
39
Dockerfile
Normal file
39
Dockerfile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#This is the base image used for any ran images
|
||||||
|
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
|
||||||
|
WORKDIR /app
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
#This image is used to build the source for the runnable app
|
||||||
|
#It can also be used to run other CLI commands on the project, such as packing/deploying nuget packages. Some examples:
|
||||||
|
#Run tests: docker build --target builder -t ocelot-build . && docker run ocelot-build test --logger:trx;LogFileName=results.trx
|
||||||
|
#Run benchmarks: docker build --target builder --build-arg build_configuration=Release -t ocelot-build . && docker run ocelot-build run -c Release --project test/Ocelot.Benchmarks/Ocelot.Benchmarks.csproj
|
||||||
|
FROM microsoft/dotnet:2.1.502-sdk AS builder
|
||||||
|
WORKDIR /build
|
||||||
|
#First we add only the project files so that we can cache nuget packages with dotnet restore
|
||||||
|
COPY Ocelot.sln Ocelot.sln
|
||||||
|
COPY src/Ocelot/Ocelot.csproj src/Ocelot/Ocelot.csproj
|
||||||
|
COPY test/Ocelot.AcceptanceTests/Ocelot.AcceptanceTests.csproj test/Ocelot.AcceptanceTests/Ocelot.AcceptanceTests.csproj
|
||||||
|
COPY test/Ocelot.ManualTest/Ocelot.ManualTest.csproj test/Ocelot.ManualTest/Ocelot.ManualTest.csproj
|
||||||
|
COPY test/Ocelot.IntegrationTests/Ocelot.IntegrationTests.csproj test/Ocelot.IntegrationTests/Ocelot.IntegrationTests.csproj
|
||||||
|
COPY test/Ocelot.UnitTests/Ocelot.UnitTests.csproj test/Ocelot.UnitTests/Ocelot.UnitTests.csproj
|
||||||
|
COPY test/Ocelot.Benchmarks/Ocelot.Benchmarks.csproj test/Ocelot.Benchmarks/Ocelot.Benchmarks.csproj
|
||||||
|
RUN dotnet restore
|
||||||
|
#Now we add the rest of the source and run a complete build... --no-restore is used because nuget should be resolved at this point
|
||||||
|
COPY codeanalysis.ruleset codeanalysis.ruleset
|
||||||
|
COPY src src
|
||||||
|
COPY test test
|
||||||
|
ARG build_configuration=Debug
|
||||||
|
RUN dotnet build --no-restore -c ${build_configuration}
|
||||||
|
ENTRYPOINT ["dotnet"]
|
||||||
|
|
||||||
|
#This is just for holding the published manual tests...
|
||||||
|
FROM builder AS manual-test-publish
|
||||||
|
ARG build_configuration=Debug
|
||||||
|
RUN dotnet publish --no-build -c ${build_configuration} -o /app test/Ocelot.ManualTest
|
||||||
|
|
||||||
|
#Run manual tests! This is the default run option.
|
||||||
|
#docker build -t ocelot-manual-test . && docker run --net host ocelot-manual-test
|
||||||
|
FROM base AS manual-test
|
||||||
|
ENV ASPNETCORE_ENVIRONMENT=Development
|
||||||
|
COPY --from=manual-test-publish /app .
|
||||||
|
ENTRYPOINT ["dotnet", "Ocelot.ManualTest.dll"]
|
@ -16,7 +16,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||||||
GitVersion.yml = GitVersion.yml
|
GitVersion.yml = GitVersion.yml
|
||||||
global.json = global.json
|
global.json = global.json
|
||||||
LICENSE.md = LICENSE.md
|
LICENSE.md = LICENSE.md
|
||||||
ocelot.postman_collection.json = ocelot.postman_collection.json
|
|
||||||
README.md = README.md
|
README.md = README.md
|
||||||
release.ps1 = release.ps1
|
release.ps1 = release.ps1
|
||||||
ReleaseNotes.md = ReleaseNotes.md
|
ReleaseNotes.md = ReleaseNotes.md
|
||||||
@ -24,6 +23,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||||||
run-benchmarks.ps1 = run-benchmarks.ps1
|
run-benchmarks.ps1 = run-benchmarks.ps1
|
||||||
run-unit-tests.ps1 = run-unit-tests.ps1
|
run-unit-tests.ps1 = run-unit-tests.ps1
|
||||||
version.ps1 = version.ps1
|
version.ps1 = version.ps1
|
||||||
|
Dockerfile = Dockerfile
|
||||||
|
.dockerignore = .dockerignore
|
||||||
|
docker-compose.yaml = docker-compose.yaml
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{5B401523-36DA-4491-B73A-7590A26E420B}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{5B401523-36DA-4491-B73A-7590A26E420B}"
|
||||||
|
24
docker-compose.yaml
Normal file
24
docker-compose.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
version: "3.4"
|
||||||
|
services:
|
||||||
|
|
||||||
|
tests:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
target: builder
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: .
|
||||||
|
target: /results
|
||||||
|
command: test --logger:trx -r /results
|
||||||
|
|
||||||
|
benchmarks:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
target: builder
|
||||||
|
args:
|
||||||
|
build_configuration: Release
|
||||||
|
command: run -c Release --project test/Ocelot.Benchmarks/Ocelot.Benchmarks.csproj 0 1 2 3 4
|
||||||
|
|
||||||
|
manual-test:
|
||||||
|
build: .
|
||||||
|
ports: [ "5000:80" ]
|
@ -1,4 +1,7 @@
|
|||||||
namespace Ocelot.ManualTest
|
using System.Reflection.Metadata.Ecma335;
|
||||||
|
using Ocelot.Requester;
|
||||||
|
|
||||||
|
namespace Ocelot.ManualTest
|
||||||
{
|
{
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
@ -36,6 +39,7 @@
|
|||||||
x.Audience = "test";
|
x.Audience = "test";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
s.AddSingleton<QosDelegatingHandlerDelegate>((x, t) => new FakeHandler());
|
||||||
s.AddOcelot()
|
s.AddOcelot()
|
||||||
.AddDelegatingHandler<FakeHandler>(true);
|
.AddDelegatingHandler<FakeHandler>(true);
|
||||||
// .AddCacheManager(x =>
|
// .AddCacheManager(x =>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user