Why is Docker-compose failing to copy local files to the container

52,885

Solution 1

It would seem this is a bug.

I found the solution here :

https://github.com/docker/for-mac/issues/1922#issuecomment-355364451

Which was simply moving the Dockerfile that was having issues at the root level of the docker-compose.yaml file.

Solution 2

From https://docs.docker.com/engine/reference/builder/#copy. says :

COPY obeys the following rules:

  • The [src] path must be inside the context of the build; you cannot COPY ../something /something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.

  • If [src] is a directory, the entire contents of the directory are copied, including filesystem metadata.

so it's not bugs . COPY cannot read files from your absolute path.

so the solution is to create your docker-compose.yml in same directory with your SOURCE dir/files and run it.

Share:
52,885

Related videos on Youtube

A_V
Author by

A_V

Updated on September 18, 2022

Comments

  • A_V
    A_V over 1 year

    I am building a simple DotnetCore application with docker-compose support with VS2017.

    I have two Dockerfile, one for the app and one for an NGINX proxy. On top of that, there is a docker-compose.yml file that wraps both of these together.

    This is the aspnetcore app Dockerfile, there's many COPY statement in there and they all work properly!

    FROM microsoft/dotnet:2.0-runtime AS base
    WORKDIR /app
    
    FROM microsoft/dotnet:2.0-sdk AS build
    WORKDIR /src
    COPY CoreServer.sln ./
    COPY CoreServer/CoreServer.csproj CoreServer/
    RUN dotnet restore -nowarn:msb3202,nu1503
    COPY . .
    WORKDIR /src/CoreServer
    RUN dotnet build -c Release -o /app
    
    FROM build AS publish
    RUN dotnet publish -c Release -o /app
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app .
    ENTRYPOINT ["dotnet", "CoreServer.dll"]
    

    This is the nginx Dockerfile which can't manage to copy files properly. Instead, it outputs the following error:

    COPY failed: stat /var/lib/docker/tmp/docker-builder780242597/nginx.conf: no such file or directory. #1859

    FROM nginx
    
    WORKDIR /etc/nginx
    
    COPY nginx.conf ./
    COPY server.crt ./
    COPY server.key ./
    

    I tried building this Dockerfile by itself and it works, but when I use docker-compose it gives the error above.

    This is what the docker-compose.yml file looks like

    version: '3'
    
    services:
      coreserver:
        image: coreserver
        build:
          context: .
          dockerfile: CoreServer/Dockerfile
        expose:
          - "5000"
    
      nginx:
        build: 
          context: .
          dockerfile: nginx/Dockerfile
        ports:
          - "80:80"
          - "443:443"
        links:
          - coreserver
    

    If you want to look at the full project, it's a dotnetcore websocket server test application with a server and a client application.

    https://github.com/avboivin/WssCoreServer/tree/master/server

    Can somebody tell me what I'm doing wrong to have docker send give this particular error ?