Windows 11中docker-compose up执行失败问题求助
问题分析与解决
核心问题
报错exec: "docker-compose": executable file not found in $PATH的根源是:容器内部没有安装docker-compose,你在docker-compose.yml的command字段里写的docker-compose run --rm app ...,是试图在容器内执行宿主机的命令——这完全没必要,而且容器环境里根本没有这个工具。
另外你的Dockerfile还有两处明显错误:
pip install --upgrade pop是笔误,应该是pip install --upgrade pip- 最后一行的
ENV PATH="C:\Program Files\Python38\:$PATH"是Windows系统路径,而容器用的是Alpine Linux,这个设置完全无效,还可能干扰容器内的PATH配置
解决方案
1. 修正docker-compose.yml的command
直接去掉多余的docker-compose调用,保留启动服务的核心命令即可:
version: "3.9" services: app: build: context: . args: - DEV=true ports: - "8000:8000" volumes: - ./app:/app command: sh -c "python manage.py runserver 0.0.0.0:8000"
或者更简洁的写法:
command: python manage.py runserver 0.0.0.0:8000
2. 修正Dockerfile的错误
FROM python:3.12.1-alpine3.19 LABEL maintainer="jtelemarketing.com" ENV PYTHONUNBUFFERED 1 COPY ./requirements.txt . COPY ./requirements.dev.txt . COPY ./app /app WORKDIR /app EXPOSE 8000 ARG DEV=false RUN python -m venv /py && \ # 修正笔误:pop → pip pip install --upgrade pip && \ pip install -r /requirements.txt && \ if [ $DEV == "true" ]; \ then pip install -r /requirements.dev.txt ; \ fi # 替换无效的Windows PATH,添加虚拟环境的路径(可选但推荐) ENV PATH="/py/bin:$PATH"
为什么之前的操作能生效?
- 替换成
python manage.py runserver ...能运行:因为这是直接在容器内执行Python命令,容器本身配置了Python环境 - 在终端直接执行
docker-compose run --rm app ...能运行:因为这个命令是在宿主机执行的,宿主机已经安装了docker-compose,它会创建新容器并执行里面的Python命令
内容的提问来源于stack exchange,提问作者Khan
相关产品推荐
相关产品推荐

