【Docker系列】如何在容器启动完成后执行curl

举报
kwan的解忧杂货铺 发表于 2024/10/27 18:27:27 2024/10/27
【摘要】 在服务启动完成后执行 curl 命令可以通过 Docker 的 depends_on 和 healthcheck 配置来实现。虽然 depends_on 只控制容器启动的顺序,并不保证依赖的容器就绪,但结合 healthcheck 可以确保在服务完全启动后再执行 curl。下面是一个示例步骤:添加 healthcheck:在你的 Docker Compose 文件中,为 test-flex-...

在服务启动完成后执行 curl 命令可以通过 Docker 的 depends_onhealthcheck 配置来实现。虽然 depends_on 只控制容器启动的顺序,并不保证依赖的容器就绪,但结合 healthcheck 可以确保在服务完全启动后再执行 curl
在这里插入图片描述

下面是一个示例步骤:

  1. 添加 healthcheck:在你的 Docker Compose 文件中,为 test-flex-flow 添加 healthcheck

  2. 使用 execcommand 执行 curl:可以使用 Docker 的 exec 命令在容器内执行 curl,或者在容器启动后执行一个脚本。

以下是一个示例:

version: "3.8"
services:
  test-flex-flow:
    container_name: test-flex-flow
    image: ${FASTAGI_FLEX_FLOW_IMAGE:-deploy.test.com/console-tag/test-flex-flow:v1.8.0}
    ports:
      - "${EXPOSE_FLEX_FLOW_PORT:-5001}:5001"
    restart: always
    privileged: true
    environment:
      MODE: "api"
      CONSOLE_API_URL: "https://${EXPOSE_SERVER_IP}:${EXPOSE_FLEX_FLOW_PORT:-5001}"
      SERVICE_API_URL: "https://${EXPOSE_SERVER_IP}:${EXPOSE_FLEX_FLOW_PORT:-5001}"
      OPENAI_API_KEY: "xxxxx"
    volumes:
      - ./volumes/data-gym-cache:/tmp/data-gym-cache
      - ./server/flex-flow/storage:/app/api/storage
      - ./server/flex-flow/env.properties:/app/api/.env
      - ./server/flex-flow/logs:/flex-flow/logs
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5001/console/api/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    command: >
      sh -c "
      while ! curl -s http://localhost:3001/console/api/health; do sleep 5; done &&
      curl -X POST 'http://localhost:3001/console/api/setup' \
           -H 'Content-Type: application/json' \
           --data-raw '{\"email\":\"admin@test.com\",\"name\":\"admin@test.com\",\"password\":\"admin123\"}'"

在这里插入图片描述

在这个例子中:

  • healthcheck 确保容器启动后能够成功响应健康检查。
  • command 将等待服务完全启动并能够响应,然后执行 curl 命令进行设置。

这样配置后,容器启动完成后会自动执行你需要的 curl 命令。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。