我目前正在使用“使用Docker”这本书学习Docker。在第5章中,作者从使用docker run
切换到使用docker compose
,这会在我的测试应用程序中产生permission denied
错误。我有什么办法可以让它发挥作用吗?
我用:
1.12.0
1.8.0
,构建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"]
搬运工-compose.yml :
identidock:
build: .
ports:
- "5000:5000"
environment:
ENV: DEV
volumes:
- ./app:/app
根据工具箱的要求,应用程序位于C:/Users/MyUserName
下,以使共享卷正常工作。
工作docker命令,启动容器和Web服务器,将其成功公开给我的Windows主机:
docker run -e "ENV=DEV" -p 5000:5000 identidock
docker-compose up
命令失败,并显示以下消息:
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.
答案 0 :(得分:4)
尝试添加
RUN chmod +x /cmd.sh
之后到您的Dockerfile
COPY cmd.sh /
根据that issue,似乎docker客户端设置了文件所需的exec权限,而docker compose却没有
可能是docker客户端为所有人设置了可执行位 文件,其中Compose没有(还)。
答案 1 :(得分:0)
我的情况下,我需要以管理员身份执行命令ligne(git bash) 再次运行:
docker-compose up -d .
这对我有用。