【问题标题】:Docker-compose python manage.py no such file or directoryDocker-compose python manage.py 没有这样的文件或目录
【发布时间】:2019-07-26 19:30:43
【问题描述】:

我正在使用 docker-compose 运行三个容器。其中两个依赖于数据库,所以我使用wait-for-it.sh 来确保它们在数据库监听之前不会运行。

这是my docker-compose.yml 文件:

  web:
    build: ./docker/web
    command: ["./wait-for-it.sh", "db:5432", "--", "python", "manage.py", "runserver", "0.0.0.0:8080"]
    ports:
      - "8080:8080"
    depends_on:
      - db
      - spider
    links:
      - db

当我运行docker-compose up 命令时出现错误:

web_1     | wait-for-it.sh: waiting 15 seconds for db:5432
web_1     | wait-for-it.sh: db:5432 is available after 0 seconds
web_1     | python: can't open file 'manage.py': [Errno 2] No such file or directory

当我添加音量.:/src 时,找到了manage.py,但没有找到wait-for-it.sh

ERROR: for web  Cannot start service web: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"./wait-for-it.sh\": stat ./wait-for-it.sh: no such file or directory": unknown

我将wait-for-it.sh 文件添加到web 服务的Dockerfile 所在的目录。

知道我怎样才能完成这项工作吗?

编辑 这是 docker-compose 中使用的 Dockerfile:

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /src
COPY . /src
WORKDIR /src
RUN pip install -r requirements.txt

【问题讨论】:

  • 您可以在问题中包含您的Dockerfile 吗? COPYing 你的应用程序代码正确吗?
  • @DavidMaze 我包含了 Dockerfile。很抱歉没有早点做。

标签: bash docker docker-compose


【解决方案1】:

我通过改变方法来修复它。为 db 服务添加了健康检查:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:5432"]
  interval: 5s
  timeout: 30s
  retries: 5

并重启其他服务的策略:

restart: on-failure

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2021-09-28
    • 2019-04-01
    • 2018-08-07
    相关资源
    最近更新 更多