This Dockerfile builds two types of images: one based on Mono for running a.NET application, and another based on ASP.NET Core 1.1 for running an ASP.NET Core application. The images install necessary dependencies, copy files, set the working directory, and define entry points to run the applications using respective runtimes.
#FROM
mono:latest
#RUN
mono--
version
#RUN
ls - la
#ADD.
/subscription.services /
home / src
#ADD.
/act.subscription.management.sln /
home / src
#WORKDIR / home / src
#RUN
msbuild.
/subscription.services/
Subscription.Services.EloquaImport / Subscription.Services.EloquaImport.csproj
#RUN
mono
Subscription.Services.EloquaImport.exe
#FROM
microsoft / aspnetcore
:
1.1
FROM
microsoft / aspnetcore - build
:
1.0 - 1.1
ARG
source
EXPOSE
80
WORKDIR / app / src
ADD.
/*.sln /app/src/
ADD ./subscription.services/Subscription.Services.EloquaImport/*.csproj /app/src/subscription.services/Subscription.Services.EloquaImport/
ADD ./subscription.services/Subscription.Services.ZuoraExport/*.csproj /app/src/subscription.services/Subscription.Services.ZuoraExport/
ADD ./*.dcproj /app/src/
RUN /bin/bash -c "dotnet restore ./act.subscription.management.sln"
ADD . /app/src
RUN /bin/bash -c "dotnet restore ./act.subscription.management.sln && dotnet publish ./act.subscription.management.sln -c Release -o ./obj/Docker/publish"
RUN cp -R ${source:-subscription.services/Subscription.Services.EloquaImport/obj/Docker/publish} /app
WORKDIR /app/publish
EXPOSE 80
ENTRYPOINT ["/usr/bin/dotnet", "/app/publish/Subscription.Services.EloquaImport.dll"]
# Use official Mono image as base
FROM mono:latest AS build
# Print Mono version
RUN mono --version
# List files in the current directory
RUN ls -la
# Copy subscription services and act subscription management solution files
ADD /subscription.services /home/src
ADD /act.subscription.management.sln /home/src
# Switch to the build directory
WORKDIR /home/src
# Build subscription services project
RUN msbuild./subscription.services/Subscription.Services.EloquaImport/Subscription.Services.EloquaImport.csproj
# Run the subscription services application
RUN mono./Subscription.Services.EloquaImport.exe
# Use official ASP.NET Core 1.1 image as base
FROM mvc:microsoft-aspnetcore-runtime-1.1 AS runtime
# Use official ASP.NET Core 1.1 runtime image as base
FROM mcr.microsoft.com/dotnet/core/sdk:1.1 AS build
# Set environment variable for source
ARG source
# Expose port 80
EXPOSE 80
# Set working directory
WORKDIR /app/src
# Copy solution files
COPY./act.subscription.management.sln /app/src/
COPY./subscription.services/Subscription.Services.EloquaImport/*.csproj /app/src/subscription.services/Subscription.Services.EloquaImport/
COPY./subscription.services/Subscription.Services.ZuoraExport/*.csproj /app/src/subscription.services/Subscription.Services.ZuoraExport/
COPY.//*.dcproj /app/src/
# Restore dependencies for the solution
RUN /bin/bash -c "dotnet restore./act.subscription.management.sln"
# Copy application code
COPY. /app/src
# Restore dependencies for the solution and publish it
RUN /bin/bash -c "dotnet restore./act.subscription.management.sln && dotnet publish./act.subscription.management.sln -c Release -o./obj/Docker/publish"
# Copy published application code
RUN cp -R ${source:-subscription.services/Subscription.Services.EloquaImport/obj/Docker/publish} /app
# Switch to the published directory
WORKDIR /app/publish
# Set entrypoint for the application
ENTRYPOINT ["/usr/bin/dotnet", "/app/publish/Subscription.Services.EloquaImport.dll"]
Dockerfile Breakdown
#FROM
mono:latest
#RUN
mono--
version
#RUN
ls - la
#ADD.
/subscription.services /
home / src
#ADD.
/act.subscription.management.sln /
home / src
/subscription.services
directory and the act.subscription.management.sls
file into the /home/src
directory.#WORKDIR / home / src
/home/src
.#RUN
msbuild.
/subscription.services/
Subscription.Services.EloquaImport / Subscription.Services.EloquaImport.csproj
Subscription.Services.EloquaImport
project using MSBuild.#RUN
mono
Subscription.Services.EloquaImport.exe
Subscription.Services.EloquaImport.exe
executable using Mono.FROM
microsoft / aspnetcore
:
1.1
FROM
microsoft / aspnetcore - build
:
1.0 - 1.1
ARG
source
EXPOSE
80
source
and exposes port 80.WORKDIR / app / src
/app/src
.ADD.
/*.sln /app/src/
ADD./subscription.services/Subscription.Services.EloquaImport/*.csproj /app/src/subscription.services/Subscription.Services.EloquaImport/
ADD./subscription.services/Subscription.Services.ZuoraExport/*.csproj /app/src/subscription.services/Subscription.Services.ZuoraExport/
ADD./*.dcproj /app/src/
/app/src
directory.RUN /bin/bash -c "dotnet restore./act.subscription.management.sln"
act.subscription.management.sln
project using dotnet restore
.ADD. /app/src
/app/src
.RUN /bin/bash -c "dotnet restore./act.subscription.management.sln && dotnet publish./act.subscription.management.sln -c Release -o./obj/Docker/publish"
act.subscription.management.sln
project using dotnet publish
.RUN cp -R ${source:-subscription.services/Subscription.Services.EloquaImport/obj/Docker/publish} /app
/app
directory.WORKDIR /app/publish
/app/publish
.EXPOSE 80
ENTRYPOINT ["/usr/bin/dotnet", "/app/publish/Subscription.Services.EloquaImport.dll"]
Subscription.Services.EloquaImport.dll
executable using dotnet
.