0
votes

After refactoring from docker-compose into separate Docker file for each project, I'm Unable to run the container, it simply exits. I'm using both docker and docker-compose since I'll have more projects down the road.

My docker files are as follows.

docker-compose.yml

version: '3'

services:

  customer:
    image: customer
    container_name: customer
    build:
      context: ./Customer
      dockerfile: Dockerfile

Customer/Dockerfile

FROM mcr.microsoft.com/dotnet/core/runtime:2.2

WORKDIR /Customer

EXPOSE 80

COPY ./bin/Release/netcoreapp2.2/ service/

ENTRYPOINT ["dotnet", "service/Customer.dll"]

Also I had this within docker-compose file before. How do I map 6001 to 80 within Dockerfile?

ports:
  - 6001:80

Attempt 2

FROM mcr.microsoft.com/dotnet/core/sdk:2.2

WORKDIR /Customer

ENV DATABASE_HOST=database
ENV DATABASE_NAME=db
ENV DATABASE_USER=sa
ENV DATABASE_PASSWORD=Password

EXPOSE 80

COPY . .

CMD dotnet build

ENTRYPOINT ["dotnet", "Customer/bin/Release/netcoreapp2.2/Department.dll"]

Attempt 3

copied from main site.

Copied from here https://docs.docker.com/engine/examples/dotnetcore/

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 Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Did you mean to run dotnet SDK commands? Please install dotnet SDK from: https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

1
When you run a container with your Dockerfile, is it running? Did you validate that firstTara Prasad Gurung
the logs are empty, no activity, and i check docker container ls, nothingAppDeveloper
eb3444bdc367 customer "bash" 9 minutes ago Exited (0) 9 minutes agoAppDeveloper
do you agree with how I wrote the docker and docker-compose files? I'm also runnign consul, another service and i see a container listed but this .net core failsAppDeveloper
I'll give you sample to work with, one moment.Henkolicious

1 Answers

1
votes

Here is a lazy and basic docker file. I added some comments and some helpful build/debug options, e.g: "RUN ls -al" to list the current directory. Just like a linux VM.

# step 1 - building you app with SDK as base image
FROM microsoft/dotnet:2.2-sdk AS build-env # call the environment build
WORKDIR /build # create a work dir

COPY . . # you don't need copy everything to build your app, but this is for simplisity

RUN ls -al # linux command to list dir content

RUN cd /Customer && dotnet publish -o out # actually building the app and publishing to /out dir

RUN cd /Customer && ls -al # navigate to the folder you copied and list dir

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS runtime # step 2, runtime env (slimmed down container)
WORKDIR /app # create workdir
COPY --from=build-env /<YOUR_BULD_PATH>/out ./ # copy from prev container build output

RUN ls -al # list again

ENTRYPOINT ["dotnet", "Department.dll", "--urls", "http://*:6001"] # example from .NET Core 2.2 webapi with port 6005, this might not be your case

Now to run the docker-compose, just point out the docker file like you have already done. But both docker/docker-compose should work just fine now. Ofcourse you need to tweak the docker file a bit, i dont know your app or folder structure.

And just a tip, if you want to run your docker file as stand alone, dont forget the args when you start it to map ports --> -p 6001:80