无法启动服务 API:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:"python manage.py 运行服务器



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

(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中找不到可执行文件:未知错误:启动项目时遇到错误。

如何处理?

基于错误消息

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

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

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

这将寻找完整的字符串作为要运行的可执行文件,而不是第一个argmanage.py的python,而是一个名为的可执行程序

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

相反,你需要将这些论点中的每一个分开:

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

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

在运行docker-compose命令之前,请尝试使用命令chmod +x在您的entrypoint.sh和docker-entrypoint.h文件中授予可执行权限。

相关内容

最新更新