Reputation: 215
I want to be able to run dotnet core by docker in different environments(for now just development and production) but my docker always start in production environment. here is my docker file:
FROM microsoft/dotnet:sdk 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 -o out
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "test.dll"]
I have appsettings.Production.json and appsettings.Development.json and I have configured my two environments in program.cs like below:
public static IWebHostBuilder CreateWebHostBuilder (string[] args) =>
WebHost.CreateDefaultBuilder (args)
.ConfigureAppConfiguration ((hostingContext, config) => {
config.AddJsonFile ("appsettings.Development.json", optional : false, reloadOnChange : false)
.AddJsonFile ("appsettings.Production.json", optional : false, reloadOnChange : false);
})
//End of update
.UseStartup<Startup> ();
I build the docker image and container but when it starts it starts in production mode I want it to start in development mode
Upvotes: 18
Views: 23180
Reputation: 303
I had same problem. My Project has 3 appsetings.json inside (one generic and two for development and production like this appsettings.development.json and appsettings.producation.json). I tried these:
Upvotes: 3
Reputation: 531
If you don't specify the environ while running the container, it will take “Production” by default.
To run another environ:
docker run -d -p 8000:80 –name something –env ASPNETCORE_ENVIRONMENT=Development myimage
Upvotes: 2
Reputation: 11940
ASP.NET Core reads the following environment variable ASPNETCORE_ENVIRONMENT
if not set then it defaults to production
. What you need to do is to use this in your Dockerfile
ENV ASPNETCORE_ENVIRONMENT Development
Or if you are using docker-compose.yml file
environment:
ASPNETCORE_ENVIRONMENT: Development
For more details:
Upvotes: 12