Docker Compose启动报错:entrypoint.sh权限被拒绝求助
解决Docker容器启动时entrypoint.sh权限拒绝问题
问题原因
容器启动时提示exec: "/usr/src/app/entrypoint.sh": permission denied,核心原因是复制到容器内的entrypoint.sh文件没有可执行权限,导致系统无法运行该脚本。
解决方案
方案1:在Dockerfile中添加权限赋予命令
在COPY ./entrypoint.sh .之后,新增一行赋予脚本可执行权限的命令:
RUN chmod +x /usr/src/app/entrypoint.sh
修改后的完整Dockerfile:
FROM python:3.8 WORKDIR /usr/src/app/ ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 RUN pip install --upgrade pip wheel COPY ./requirements.txt . RUN apt-get update && apt-get install -y libwebp-dev g++ gcc gettext RUN apt install gettext -y RUN pip install -r requirements.txt --no-cache-dir COPY ./entrypoint.sh . RUN chmod +x /usr/src/app/entrypoint.sh COPY . . ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
方案2:本地先设置脚本权限再复制
在本地项目目录的终端中,先给entrypoint.sh添加可执行权限:
chmod +x entrypoint.sh
之后重新执行docker-compose up --build,COPY命令会保留文件的权限属性,容器启动时即可正常执行脚本。
额外检查点
确保entrypoint.sh文件开头有正确的shebang声明(比如#!/bin/bash或#!/bin/sh),这是脚本被正确解析执行的前提。
内容的提问来源于stack exchange,提问作者Mir1a
相关产品推荐
相关产品推荐

