Permission Denied with Docker-Compose on Windows

I am currently learning Docker, with the book “Using Docker”. In chapter 5, the author switches from using docker run to using docker compose, which yields a permission denied error in my test application. Is there something I can do to have it work?

I use:

  • Boot2Docker on Mac - Accessing Local Files
  • Connecting to Host Postgresql From inside a Container
  • Is it possible to create docker image from .img file containing OS
  • Docker php7.0:apache : “docker-php-source: not found”
  • Docker-compose volumes doesn't copy any files
  • Upgrade docker on CentOS 7
    • Windows 10 Home Edition, with the Docker Toolbox
    • Docker version is 1.12.0
    • Docker Compose version is 1.8.0, build d988a55

    DockerFile:

    FROM python:3.4
    
    RUN groupadd -r uwsgi && useradd -r -g uwsgi uwsgi
    RUN pip install Flask==0.10.1 uWSGI==2.0.8
    WORKDIR /app
    COPY app /app
    COPY cmd.sh /
    
    EXPOSE 9090 9191
    USER uwsgi
    
    CMD ["/cmd.sh"]
    

    docker-compose.yml:

    identidock:
      build: .
      ports:
        - "5000:5000"
      environment:
        ENV: DEV
      volumes:
        - ./app:/app
    

    The application is located under C:/Users/MyUserName, as required by the Toolbox, to have shared volumes working correctly.

    The working docker command, which starts the container and the web server, exposing it successfully to my Windows host:

    docker run -e "ENV=DEV" -p 5000:5000 identidock
    

    The docker-compose up command fails with the following message:

    Starting identidock_identidock_1
    
    ERROR: for identidock  Cannot start service identidock: oci runtime error: exec: "/cmd.sh": permission denied
    ←[31mERROR←[0m: Encountered errors while bringing up the project.
    

  • Dockerfile contains a python script that writes to an output file, but the output file is not being created on the container
  • How to use 'when' conditional with Systemd Unit configs
  • How to use Nomad with Nvidia Docker?
  • Docker: Cronjob is not working
  • docker-compose up issues on Ubuntu 14.04
  • What does Docker add to lxc-tools (the userspace LXC tools)?
  • One Solution collect form web for “Permission Denied with Docker-Compose on Windows”

    Try adding

    RUN chmod +x /cmd.sh
    

    to your Dockerfile after

    COPY cmd.sh /  
    

    According to that issue it seems that the docker client sets the needed exec permission for the file while docker compose does not

    It may be that the docker client sets the executable bit for all
    files, where as Compose does not (yet).

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.