The*_*xme 5 post docker dockerfile docker-compose
我有一个 docker 容器,它是由docker-compose. 该容器在启动时需要通过向其 REST API 发送 HTTP POST 请求进行配置。
基本上我现在所做的就是运行docker-compose up并等待一段时间,以便一切似乎都已开始,特别是给定的 docker 容器。然后我使用命令发送 HTTP POST curl。
有没有办法修改,Dockerfile以便启动 Docker 容器,等待其 REST API 启动并发布给定的请求?
我的问题是一个通用问题,但如果您需要更多详细信息,这是我当前的非常简单的问题Dockerfile:
FROM 1ambda/kafka-connect:latest
COPY my-project/target/*.jar $KAFKA_HOME/libs/
Run Code Online (Sandbox Code Playgroud)
以及相应的行docker-compose.yml:
connect:
build: kafka-connect
links:
- kafka
ports:
- "8083:8083"
environment:
CONNECT_BOOTSTRAP_SERVERS: kafka:9092
CONNECT_GROUP_ID: connect-cluster-A
Run Code Online (Sandbox Code Playgroud)
最后,容器启动后我会执行 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
Run Code Online (Sandbox Code Playgroud)
您可以创建另一个容器,等待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"]
Run Code Online (Sandbox Code Playgroud)
这是 init 容器的 Docker 文件。您可以使用这个wait-for-it.sh文件
FROM bash
RUN apk add --no-cache curl
ADD init.sh wait-for-it.sh /
Run Code Online (Sandbox Code Playgroud)
init.sh 文件包含您的 HTTP POST(如果需要,您可以向此文件添加其他命令)
FROM bash
RUN apk add --no-cache curl
ADD init.sh wait-for-it.sh /
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4785 次 |
| 最近记录: |