If docker container is running and you are not able to connect to database, this blog should help you fix it.
Prerequisite -
- Make sure code is working via running aspnet core locally via visual studio or command line.
- Port 1433 is opened for connecting to SQL server.
Solution
If you have Docker file ready, it should somewhat look like below file -
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY /SampleAPI/*.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . .
WORKDIR /app/SampleAPI
RUN dotnet publish -c Production -o publish
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app/SampleAPI
COPY --from=build-env /app/SampleAPI .
WORKDIR /app/SampleAPI/bin/Production/netcoreapp3.1
ENTRYPOINT ["dotnet", "SampleAPI.dll"]
Add following lines to make database connectivity
#To connect to database
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /usr/lib/ssl/openssl.cnf
The above lines invoke 'sed'(stream Editor) to open file and edit it.
- Line 1 is modfying '/etc/ssl/openssl.conf' file and replacing MinProtocal = TLSv1.2 to MinProtocol = TLSv1.
- Line 2 is modifying same protocol in another file.
- Line 3 is setting the security level from DEFAULT@SECLEVEL=2 to DEFAULT@SECLEVEL=1.
- Line 4 is modifying the same in another file.
Note: You can add first 2 OR last 2 OR all lines depending upon connection issue with database.
Final Docker file will look something like that -
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY /SampleAPI/*.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . .
WORKDIR /app/SampleAPI
RUN dotnet publish -c Production -o publish
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
#To connect to database
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /usr/lib/ssl/openssl.cnf
WORKDIR /app/SampleAPI
COPY --from=build-env /app/SampleAPI .
WORKDIR /app/SampleAPI/bin/Production/netcoreapp3.1
ENTRYPOINT ["dotnet", "SampleAPI.dll"]
Build Docker image
docker build -t sampleapi:latest .
Run Docker container
docker run -rm -p 5000:80 sampleapi:latest
where 80 is default port of docker container and 5000 port to expose to internet.
Browse the API and it should respond with successful database connection.
Alternatively
bionic version of aspnet core image can be used -
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-bionic AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY /DPRR-API/*.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . .
WORKDIR /app/DPRR-API
RUN dotnet publish -c Production -o publish
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic
WORKDIR /app/DPRR-API
COPY --from=build-env /app/DPRR-API .
WORKDIR /app/DPRR-API/bin/Production/netcoreapp3.1
ENTRYPOINT ["dotnet", "DPRR-API.dll"]
By using bionic image of aspnet core(mcr.microsoft.com/dotnet/core/sdk:3.1-bionic), there should not be any need of modifying the TLS or default settings.
Please share your feedback if it works for you.
Thanks for sparing out time to write comment on post. Please elaoborate more on what you would like to advice.
ReplyDeleteinformative article...!
ReplyDeletedata science course in noida
cool stuff you have and you keep redesign all of us
ReplyDeleteHRDF training
This is such a great resource that you are providing and you give it away for free.
ReplyDeletedigital marketing courses in hyderabad with placements
ReplyDeleteIf you don"t mind proceed with this extraordinary work and I anticipate a greater amount of your magnificent blog entries
Digital Marketing Training Institutes in Hyderabad
All things considered I read it yesterday however I had a few considerations about it and today I needed to peruse it again on the grounds that it is very elegantly composed.
ReplyDeletedata scientist course
Good information you shared. keep posting.
ReplyDeletemachine learning course in aurangabad
Nice blog post,
ReplyDeleteDigital Marketing Interview Questions and Answers
Excellent start to the series—efficiency is key for any analyst! This first post on identifying time-wasters sets a strong foundation. Here are a few friendly ideas to consider for future installments:
ReplyDelete1. Highlight real-world examples.
Illustrate how common habits—like repetitive manual checks or overloading dashboards with unnecessary metrics—can slow workflows. Concrete scenarios help readers immediately recognize these issues in their own teams.
2. Emphasize tracking and measurement.
Encouraging analysts to log or track how long routine tasks (data cleaning, report generation, approvals) actually take can be eye-opening. Quantifying “wasted” minutes creates urgency and motivation for change.
3. Introduce automation and templating.
Even simple automation—such as macros for frequent Excel tasks, templated SQL queries, or parameterized report frameworks—can significantly cut processing time and reduce errors.
4. Provide a “before vs. after” case study.
Showing a small improvement—say, reducing report prep from 2 hours to 30 minutes after applying one change—makes the benefits tangible and inspiring.
These additions could make your post even more actionable—especially for analysts looking to boost productivity without compromising accuracy.
data analytics course in hyderabad