【Docker系列】如何在容器启动完成后执行curl
【摘要】 在服务启动完成后执行 curl 命令可以通过 Docker 的 depends_on 和 healthcheck 配置来实现。虽然 depends_on 只控制容器启动的顺序,并不保证依赖的容器就绪,但结合 healthcheck 可以确保在服务完全启动后再执行 curl。下面是一个示例步骤:添加 healthcheck:在你的 Docker Compose 文件中,为 test-flex-...
在服务启动完成后执行 curl
命令可以通过 Docker 的 depends_on
和 healthcheck
配置来实现。虽然 depends_on
只控制容器启动的顺序,并不保证依赖的容器就绪,但结合 healthcheck
可以确保在服务完全启动后再执行 curl
。
下面是一个示例步骤:
-
添加 healthcheck:在你的 Docker Compose 文件中,为
test-flex-flow
添加healthcheck
。 -
使用
exec
或command
执行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)