WSL2中docker-compose启动容器失败:权限拒绝未知错误
Docker容器启动权限拒绝问题解决(WSL2环境)
问题定位
报错核心是容器启动时无法执行/code/docker/entrypoints/entrypoint.sh,提示权限拒绝。虽然Dockerfile中已添加chmod +x命令,但WSL2的文件系统特性(尤其是跨Windows/WSL挂载目录时的权限映射)可能导致该命令未生效。
解决步骤
先在宿主机WSL2中给脚本加权限
进入项目根目录执行:chmod +x docker/entrypoints/entrypoint.sh确保宿主机侧的脚本本身具备可执行权限后,再进行镜像构建。
优化Dockerfile的COPY逻辑
直接在COPY阶段指定文件权限,替代后续的chmod命令,避免权限失效:# 替换原有COPY和chmod相关代码 COPY --chmod=755 docker/entrypoints/entrypoint.sh /code/docker/entrypoints/entrypoint.sh COPY . /code/修复WSL2挂载权限映射(针对Windows目录挂载场景)
新建或修改WSL配置文件/etc/wsl.conf,添加以下内容:[automount] options = "metadata,umask=0022"执行
wsl --shutdown重启WSL后,挂载的Windows目录文件权限会正常映射。重新构建并启动容器
执行命令:docker-compose build --no-cache docker-compose up
内容的提问来源于stack exchange,提问作者juanl4zy
相关产品推荐
相关产品推荐

