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?
- Windows 10 Home Edition, with the Docker Toolbox
- Docker version is
- Docker Compose version is
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"]
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
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.
One Solution collect form web for “Permission Denied with Docker-Compose on Windows”
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).