gpt4 book ai didi

post - Docker - 如何在启动后自动在 REST 容器上发布请求?

转载 作者:行者123 更新时间:2023-12-02 18:32:06 25 4
gpt4 key购买 nike

我有一个 docker 容器,它是由 docker-compose 配置和启动的一个大项目的一部分。 .该容器在启动时需要通过向其 REST API 发送 HTTP POST 请求来进行配置。

基本上我现在做的是运行 docker-compose up并稍等片刻,以便一切似乎都已开始,尤其是给定的 docker 容器。然后我用 curl 发送我的 HTTP POST命令。

有没有办法修改Dockerfile以便它启动 Docker 容器,等待其 REST API 启动并发布给定的请求?

我的问题是一个通用的问题,但如果您需要更多详细信息,这里是我目前非常简单的 Dockerfile :

FROM 1ambda/kafka-connect:latest
COPY my-project/target/*.jar $KAFKA_HOME/libs/

以及 docker-compose.yml 中的相应行:
connect:
build: kafka-connect
links:
- kafka
ports:
- "8083:8083"
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka:9092
CONNECT_GROUP_ID: connect-cluster-A

最后是容器启动后我执行的 HTTP POST:
curl -H "Content-Type: application/json" -X POST -d '
{
"name":"my-project",
"config" :
{
"name":"my-project",
"topics":"my-topic",
"tasks.max":2,
"connector.class":"the.package.to.my.connector.class"
}
}
' http://localhost:8083/connectors

最佳答案

您可以创建另一个容器,等待 rabbitmq 公开其 REST API,然后执行您想要的操作(在您的情况下发送 HTTP POST)
这是 docker-compose 文件的示例

connect:
build: kafka-connect
links:
- kafka
ports:
- "8083:8083"
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka:9092
CONNECT_GROUP_ID: connect-cluster-A

connect-init:
build:
context: .
depends_on:
- connect
links:
- connect
command: ["/wait-for-it.sh", "-t", "300", "connect:8083", "--", "/init.sh"]
这是 init 容器的 Docker 文件。你可以用这个 wait-for-it.sh文件
FROM bash
RUN apk add --no-cache curl
ADD init.sh wait-for-it.sh /
init.sh 文件包含您的 HTTP POST(如果需要,您可以向该文件添加其他命令)
curl -X POST \
http://connect:8083/connectors \
-d '{"name":"my-project","config":{"name":"my-project","topics":"my-topic","tasks.max":2,"connector.class":"the.package.to.my.connector.class"}}'

关于post - Docker - 如何在启动后自动在 REST 容器上发布请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38913358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com