【问题标题】:Cannot start service api: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "python manage.py runserver无法启动服务 api:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“python manage.py runserver
【发布时间】:2022-01-06 17:03:10
【问题描述】:

我想运行 docker-compose。 在运行 react 和 django 应用程序期间,docker-compose 返回以下错误:

(base) dominik@Precision:~/PycharmProjects/humanet-docker$ ls
api  docker-compose.prod.yml  docker-compose.yml  front  nginx
(base) dominik@Precision:~/PycharmProjects/humanet-docker$ docker-compose ps
              Name                             Command                State                                     Ports                                 
------------------------------------------------------------------------------------------------------------------------------------------------------
a7c8de30f648_humanet-docker_api_1   python manage.py runserver ...   Exit 127                                                                         
humanet-docker_db_1                 docker-entrypoint.sh postgres    Up         5432/tcp                                                              
humanet-docker_front_1              docker-entrypoint.sh yarn  ...   Up         0.0.0.0:3000->3000/tcp,:::3000->3000/tcp                              
humanet-docker_nginx_1              /docker-entrypoint.sh ngin ...   Up         0.0.0.0:443->443/tcp,:::443->443/tcp, 0.0.0.0:80->80/tcp,:::80->80/tcp
humanet-docker_pgadmin_1            /entrypoint.sh                   Up         443/tcp, 0.0.0.0:5050->80/tcp,:::5050->80/tcp                         
(base) dominik@Precision:~/PycharmProjects/humanet-docker$ docker-compose up
humanet-docker_pgadmin_1 is up-to-date
humanet-docker_front_1 is up-to-date
Starting a7c8de30f648_humanet-docker_api_1 ... 
humanet-docker_nginx_1 is up-to-date
Starting a7c8de30f648_humanet-docker_api_1 ... error

ERROR: for a7c8de30f648_humanet-docker_api_1  Cannot start service api: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "python manage.py runserver 0.0.0.0:8000": executable file not found in $PATH: unknown

ERROR: for api  Cannot start service api: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "python manage.py runserver 0.0.0.0:8000": executable file not found in $PATH: unknown
ERROR: Encountered errors while bringing up the project.
(base) dominik@Precision:~/PycharmProjects/humanet-docker$ 

在我的 docker 的 docker-compose.yml 文件下方

version: "3.3"
services:
  front:
    build: ./front
    working_dir: /home/dominik/node
    env_file: ./front/.env.dist
    volumes:
      - ./front:/home/dominik/node
      - /private/etc/ssl:/etc/ssl
    ports:
      - 3000:3000
    restart: always
    tty: true
  api:
    build: ./api
    working_dir: /home/dominik/python
    command: pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./api:/home/dominik/python
      - /private/etc/ssl:/etc/ssl
    ports:
      - 4000:4000
      - 8445:8445
    restart: always
    tty: true
  nginx:
    build: ./nginx
    volumes:
      - /private/etc/ssl:/etc/ssl
    ports:
      - 80:80
      - 443:443
    working_dir: /home/dominik/node
    restart: always
    tty: true
  db:
    image: postgres
    restart: always
    environment: 
      POSTGRES_PASSWORD: xxx
      POSTGRES_USER: xxx
      POSTGRES_DB: xxx
      POSTGRES_HOST_AUTH_METHOD: trust
      PGDATA: /data/db
    volumes:
      - /home/dominik/data/humanet-db:/data/db
  pgadmin:
    image: dpage/pgadmin4
    restart: always
    environment: 
      PGADMIN_DEFAULT_EMAIL: xxx
      PGADMIN_DEFAULT_PASSWORD: xxx
    ports:
      - 5050:80
    volumes:
      - /home/dominik/data/humanet-pgadmin:/var/lib/pgadmin
      - /home/dominik/data/humanet-pgadmin/servers.json:/pgadmin4/servers.json

这是 docker 第一次返回我的消息: 无法启动服务 api:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“python manage.py runserver 0.0.0.0:8000”:$PATH 中找不到可执行文件:未知

错误:对于 api 无法启动服务 api:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“python manage.py runserver 0.0.0.0:8000”:在 $PATH 中找不到可执行文件: 未知 错误:启动项目时遇到错误。

如何处理?

【问题讨论】:

  • 你的镜像的 Dockerfile 中有什么? (它是否有一个忽略command: 覆盖的ENTRYPOINT;你是否需要一个command: 覆盖;为什么每次启动容器时都需要重新运行pip install?)

标签: python django docker nginx docker-compose


【解决方案1】:

根据错误信息

exec: "python manage.py runserver 0.0.0.0:8000"

看起来您已经传递了命令,并且它是 args 作为 docker 运行的单个字段。例如。如果您的 Dockerfile 包含:

ENTRYPOINT [ "python manage.py runserver 0.0.0.0:8000" ]

这将寻找完整的字符串作为要运行的可执行文件,而不是带有第一个参数 manage.py 的 python,而是一个名为类似的可执行文件

/bin/"python manage.py runserver 0.0.0.0:8000"

相反,您需要将这些参数中的每一个分开:

ENTRYPOINT [ "python", "manage.py", "runserver", "0.0.0.0:8000" ]

然后您将进入下一个问题,即为什么要在撰写文件中设置命令以及是否需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2020-10-27
    • 2021-06-08
    相关资源
    最近更新 更多