繁体   English   中英

Hsaura docker-compose 文件返回错误 - 以代码 0 退出

[英]Hsaura docker-compose file is returning an error - exited with code 0

这是 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 时,这是错误消息。

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')

有什么我错过的吗? 我确实需要等待另一个容器首先运行,但我不明白为什么该命令会导致任何错误。

退出代码0表示成功(容易记住,所有非零退出代码 = 失败)。

看起来这里发生的事情是docker-compose.yaml中的command覆盖了默认命令。 并且您已将命令设置为:

until wget --spider host.docker.internal:8000; do
        >&2 echo 'Django is unavailable - sleeping'
        sleep 5
done;
echo 'Django is up'

假设满足until条件,并且它继续echo ,一旦它完成,该命令将以退出代码0终止,然后结束容器进程(阻止 Hasura 运行)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM