ASP.NET Core microservices web application doesn’t work on docker

I desperately need help with a case study project. So, i created 3 seperate projects in order to implement microservices architecture. I created and implemented client-side and backend-side successfully. Everything works fine locally. However, when it comes to dockerizing, i completely failed and i don’t know why. First, i was getting “Value Cannot Be Null (Parameter ‘s’)” error and then I changed the appSettings.json and the dockerfiles. The error has gone but things got more complicated. Because server is not responsive anymore. I can’t even get that error anymore.
Project Folder Structure

One of my dockerfiles:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["Identity/AdminPanel.Identity.API/AdminPanel.Identity.API.csproj", "Identity/AdminPanel.Identity.API/"]
COPY ["Shared/AdminPanel.Shared/AdminPanel.Shared.csproj", "Shared/AdminPanel.Shared/"]
COPY ["Identity/AdminPanel.Identity.Application/AdminPanel.Identity.Application.csproj", "Identity/AdminPanel.Identity.Application/"]
COPY ["Identity/AdminPanel.Identity.Domain/AdminPanel.Identity.Domain.csproj", "Identity/AdminPanel.Identity.Domain/"]
COPY ["Identity/AdminPanel.Identity.Persistence/AdminPanel.Identity.Persistence.csproj", "Identity/AdminPanel.Identity.Persistence/"]
RUN dotnet restore "./Identity/AdminPanel.Identity.API/AdminPanel.Identity.API.csproj"
COPY . .
WORKDIR "/src/Identity/AdminPanel.Identity.API"
RUN dotnet build "./AdminPanel.Identity.API.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
RUN dotnet publish "./AdminPanel.Identity.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "AdminPanel.Identity.API.dll"]
</code>
<code>#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base USER app WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY ["Identity/AdminPanel.Identity.API/AdminPanel.Identity.API.csproj", "Identity/AdminPanel.Identity.API/"] COPY ["Shared/AdminPanel.Shared/AdminPanel.Shared.csproj", "Shared/AdminPanel.Shared/"] COPY ["Identity/AdminPanel.Identity.Application/AdminPanel.Identity.Application.csproj", "Identity/AdminPanel.Identity.Application/"] COPY ["Identity/AdminPanel.Identity.Domain/AdminPanel.Identity.Domain.csproj", "Identity/AdminPanel.Identity.Domain/"] COPY ["Identity/AdminPanel.Identity.Persistence/AdminPanel.Identity.Persistence.csproj", "Identity/AdminPanel.Identity.Persistence/"] RUN dotnet restore "./Identity/AdminPanel.Identity.API/AdminPanel.Identity.API.csproj" COPY . . WORKDIR "/src/Identity/AdminPanel.Identity.API" RUN dotnet build "./AdminPanel.Identity.API.csproj" -c $BUILD_CONFIGURATION -o /app/build FROM build AS publish RUN dotnet publish "./AdminPanel.Identity.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "AdminPanel.Identity.API.dll"] </code>
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["Identity/AdminPanel.Identity.API/AdminPanel.Identity.API.csproj", "Identity/AdminPanel.Identity.API/"]
COPY ["Shared/AdminPanel.Shared/AdminPanel.Shared.csproj", "Shared/AdminPanel.Shared/"]
COPY ["Identity/AdminPanel.Identity.Application/AdminPanel.Identity.Application.csproj", "Identity/AdminPanel.Identity.Application/"]
COPY ["Identity/AdminPanel.Identity.Domain/AdminPanel.Identity.Domain.csproj", "Identity/AdminPanel.Identity.Domain/"]
COPY ["Identity/AdminPanel.Identity.Persistence/AdminPanel.Identity.Persistence.csproj", "Identity/AdminPanel.Identity.Persistence/"]
RUN dotnet restore "./Identity/AdminPanel.Identity.API/AdminPanel.Identity.API.csproj"
COPY . .
WORKDIR "/src/Identity/AdminPanel.Identity.API"
RUN dotnet build "./AdminPanel.Identity.API.csproj" -c $BUILD_CONFIGURATION -o /app/build

FROM build AS publish
RUN dotnet publish "./AdminPanel.Identity.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "AdminPanel.Identity.API.dll"]

Here is my docker-compose.yml file:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code>version: '3.8'
services:
rabbitmq:
image: rabbitmq:management
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- "5672:5672"
- "15672:15672"
volumes:
- "rabbitmq_data:/var/lib/rabbitmq"
networks:
- adminpanelnet
identity_api:
build:
context: .
dockerfile: Dockerfile.Identity
ports:
- "5218:80"
container_name: Identity-api
depends_on:
- sqlserver_db
networks:
- adminpanelnet
sqlserver:
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "Password12*"
ports:
- "1499:1433"
networks:
- adminpanelnet
container_name: user_db
command_api:
build:
context: .
dockerfile: Dockerfile.BuildingConfiguration.Command
ports:
- "5228:80"
container_name: Building_Command-api
depends_on:
- mongodb
networks:
- adminpanelnet
query_api:
build:
context: .
dockerfile: Dockerfile.BuildingConfiguration.Query
ports:
- "5129:80"
container_name: Building_Query-api
depends_on:
- mongodb
networks:
- adminpanelnet
mongodb:
image: mongo:latest
ports:
- "27017:27017"
container_name: Building_db
volumes:
- mongodata:/data/db
networks:
- adminpanelnet
volumes:
mongodata:
rabbitmq_data:
networks:
adminpanelnet:
driver: bridge
</code>
<code>version: '3.8' services: rabbitmq: image: rabbitmq:management environment: RABBITMQ_DEFAULT_USER: guest RABBITMQ_DEFAULT_PASS: guest ports: - "5672:5672" - "15672:15672" volumes: - "rabbitmq_data:/var/lib/rabbitmq" networks: - adminpanelnet identity_api: build: context: . dockerfile: Dockerfile.Identity ports: - "5218:80" container_name: Identity-api depends_on: - sqlserver_db networks: - adminpanelnet sqlserver: image: mcr.microsoft.com/mssql/server:2022-latest environment: ACCEPT_EULA: "Y" SA_PASSWORD: "Password12*" ports: - "1499:1433" networks: - adminpanelnet container_name: user_db command_api: build: context: . dockerfile: Dockerfile.BuildingConfiguration.Command ports: - "5228:80" container_name: Building_Command-api depends_on: - mongodb networks: - adminpanelnet query_api: build: context: . dockerfile: Dockerfile.BuildingConfiguration.Query ports: - "5129:80" container_name: Building_Query-api depends_on: - mongodb networks: - adminpanelnet mongodb: image: mongo:latest ports: - "27017:27017" container_name: Building_db volumes: - mongodata:/data/db networks: - adminpanelnet volumes: mongodata: rabbitmq_data: networks: adminpanelnet: driver: bridge </code>
version: '3.8'

services:
  rabbitmq:
    image: rabbitmq:management
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest
    ports:
      - "5672:5672" 
      - "15672:15672" 
    volumes:
      - "rabbitmq_data:/var/lib/rabbitmq"
    networks:
      - adminpanelnet
  identity_api:
    build:
      context: .
      dockerfile: Dockerfile.Identity
    ports:
      - "5218:80"
    container_name: Identity-api
    depends_on:
      - sqlserver_db
    networks:
      - adminpanelnet
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2022-latest
    environment:
      ACCEPT_EULA: "Y"
      SA_PASSWORD: "Password12*"
    ports:
      - "1499:1433"
    networks:
      - adminpanelnet
    container_name: user_db
  command_api:
    build:
      context: .
      dockerfile: Dockerfile.BuildingConfiguration.Command
    ports:
      - "5228:80"
    container_name: Building_Command-api
    depends_on:
      - mongodb
    networks:
      - adminpanelnet
  query_api:
    build:
      context: .
      dockerfile: Dockerfile.BuildingConfiguration.Query
    ports:
      - "5129:80"
    container_name: Building_Query-api
    depends_on:
      - mongodb
    networks:
      - adminpanelnet
  mongodb:
    image: mongo:latest
    ports:
      - "27017:27017"
    container_name: Building_db
    volumes:
      - mongodata:/data/db
    networks:
      - adminpanelnet
volumes:
  mongodata:
  rabbitmq_data:
networks:
  adminpanelnet:
    driver: bridge

And this is appSettings.json:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code> "Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"UserConnectionString" : "Server=user_db;Database=UserDb;User Id=SA;Password=Password12*;MultipleActiveResultSets=true"
},
</code>
<code> "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "UserConnectionString" : "Server=user_db;Database=UserDb;User Id=SA;Password=Password12*;MultipleActiveResultSets=true" }, </code>
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "UserConnectionString" : "Server=user_db;Database=UserDb;User Id=SA;Password=Password12*;MultipleActiveResultSets=true"
  },

And this is Conatiner block of launchSetting.json:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code> "Container (Dockerfile)": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
"environmentVariables": {
"ASPNETCORE_URLS": "https://+:443;http://+:80"
},
"publishAllPorts": true,
"useSSL": true
}
</code>
<code> "Container (Dockerfile)": { "commandName": "Docker", "launchBrowser": true, "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", "environmentVariables": { "ASPNETCORE_URLS": "https://+:443;http://+:80" }, "publishAllPorts": true, "useSSL": true } </code>
 "Container (Dockerfile)": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
      "environmentVariables": {
        "ASPNETCORE_URLS": "https://+:443;http://+:80"
      },
      "publishAllPorts": true,
      "useSSL": true
    }

As I said above, it runs perfectly on my local machine. If you have any opinion, please let me now.Also, I can provide further information if needed. Thanks in advance

New contributor

Burak Şenses is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật