В моем проекте я настроил Swagger с Swashbuckle следующим образом в моем файле Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
Когда я запускаю свое приложение из Visual Studio, я могу получить доступ к localhost:123456/swagger
и получить документацию по API, как и должно быть. Однако, когда я запускаю свое приложение через Docker с docker-compose up
и обращаюсь к docker_machine_IP/swagger
, оно просто перенаправляет меня на главную страницу моих приложений, без страницы Swagger или вообще с ошибками, просто обратно на ту же страницу, как если бы я не писал /swagger
в конце вообще. Я пробовал с несколькими разными URL, /swagger
, /swagger-ui.html
et c, но без разницы. Существуют ли какие-либо конкретные c конфигурации, которые должны быть записаны в Dockerfile или в другом месте, чтобы иметь возможность доступа к документации Swagger при работе в Docker контейнере?
Docker -составить файл:
version: "3.7"
services:
node-frontend:
container_name: node-frontend
build: ./ClientApp/
command: npm run start
ports:
- "3000:3000"
dotnet-backend:
container_name: dotnet-backend
build: .
#expose:
# - "80"
links:
- mssql-db
ports:
- "8000:80"
nginx-reverse-proxy:
container_name: nginx-reverse-proxy
build: ./nginx/
#command: tail -F /dev/null
command: nginx -g 'daemon off;'
ports:
- "80:80"
# - "443:443"
expose:
- "80"
- "443"
links:
- node-frontend
- dotnet-backend
mssql-db:
container_name: mssql-db
#image: mcr.microsoft.com/mssql/server:2019-latest
build: ./Database
environment:
- SA_PASSWORD=password
- ACCEPT_EULA=Y
volumes:
- ./Database/:/scripts/
ports:
- "1433:1433"
expose:
- "1433"
command:
- /bin/bash
- -c
- |
Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Debug -o out Project.csproj
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
EXPOSE 80
ENTRYPOINT ["dotnet", "ProjectApi.dll", "--environment=Development"]