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:

  • access service from host when ports and not linked
  • Eureka server not accessible for traditional war deployment In Docker
  • What permissions are required for docker host volume?
  • How to restore a .sql.gz dump on a Docker MySQL instance?
  • Rethinkdb container: rethinkdb process takes less RAM than the whole container
  • How to hide or delete terminated containers, services or stacks?
    • 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.
    

  • ServiceStack Docker architecture
  • docker container does not start with json unmarshal error
  • Docker containers on AWS
  • Docker keeps pushing same hashes
  • cronjob not executed on docker swarm deployment
  • docker-compose psql could not connect to server
  • 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.