Hsaura docker compose文件返回错误-已退出,代码为0

Hsaura docker compose文件返回错误-已退出,代码为0,docker,docker-compose,hasura,Docker,Docker Compose,Hasura,这是docker编写文件。我唯一改变的是添加了一个命令,以便hasura可以等到网站启动后再旋转图像 version: "3.8" services: graphql-engine: container_name: "prm_graphql_engine" image: hasura/graphql-engine:v1.3.0 ports: - "8080:8080" command: &

这是docker编写文件。我唯一改变的是添加了一个命令,以便hasura可以等到网站启动后再旋转图像

version: "3.8"
services:
  graphql-engine:
    container_name: "prm_graphql_engine"
    image: hasura/graphql-engine:v1.3.0
    ports:
      - "8080:8080"
    command: >
      sh -c "
      until wget --spider host.docker.internal:8000; do
        >&2 echo 'Django is unavailable - sleeping'
        sleep 5
      done;
        echo 'Django is up'
      "
    depends_on:
      - "db"
      - "web"
    restart: always
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@db:5432/$POSTGRES_NAME
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
当我运行docker compose up verbose时,下面是错误消息

prm_graphql_engine exited with code 0
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.38/containers/d3be369d69af7de6cd5dc84f0056dda49fce7f474b827e78e518144dca8e03d5/wait HTTP/1.1" 200 None
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.38/containers/d3be369d69af7de6cd5dc84f0056dda49fce7f474b827e78e518144dca8e03d5/json HTTP/1.1" 200 None
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': '',
 'Args': ['-c',
          ' until wget --spider host.docker.internal:8000; do\n'
          "  >&2 echo 'Django is unavailable - sleeping'\n"
          '  sleep 5\n'
          'done;\n'
          "  echo 'Django is up'\n"],
 'Config': {'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('d3be369d69af7de6cd5dc84f0056dda49fce7f474b827e78e518144dca8e03d5')
prm_图形ql_引擎已退出,代码为0
urllib3.connectionpool.\u发出请求:http://localhost:None “POST/v1.38/containers/d3be369d69af7de6cd5dc84f0056dda49fce7f474b827e78e518144dca8e03d5/wait HTTP/1.1”200无
urllib3.connectionpool.\u发出请求:http://localhost:None “GET/v1.38/containers/d3be369d69af7de6cd5dc84f0056dda49fce7f474b827e78e518144dca8e03d5/json HTTP/1.1”200无
compose.cli.verbose_proxy.proxy_可调用:docker inspect_container->{'AppArmorProfile':'',
'Args':['-c',
'until wget--spider host.docker.internal:8000;do\n'
“>&2 echo'Django不可用-正在休眠”\n”
'睡眠5\n'
'完成;\n'
“echo'Django已启动”\n”],
'Config':{'AttachStderr':False,
“AttachStdin”:错误,
“AttachStdout”:错误,
...

compose.cli.verbose_proxy.proxy_可调用:docker inspect_容器退出代码
0
成功(容易记住,所有非零退出代码=失败)

看起来这里发生的情况是,
docker compose.yaml
中的
command
覆盖默认命令。您已将该命令设置为:

直到wget--spider-host.docker.internal:8000;do
>&2 echo“Django不可用-正在休眠”
睡眠5
完成;
echo“Django在上”
假设
直到满足
条件,并继续执行
echo
,一旦完成,该命令将以退出代码
0
终止,然后结束容器进程(阻止Hasura运行)


如果你想执行预启动命令而不是覆盖容器的命令,我想你应该使用
docker entrypoint
脚本。

谢谢你,这确实回答了我的问题。你能分享一下如何不覆盖原始entrypoint或cmd吗?我实际上已经尝试了这两种方法,看起来它们都覆盖了原始cmd/entrypoint命令。