Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如果在入口点之后使用,则CMD不会运行_Bash_Docker_Apache Kafka_Dockerfile_Apache Kafka Connect - Fatal编程技术网

Bash 如果在入口点之后使用,则CMD不会运行

Bash 如果在入口点之后使用,则CMD不会运行,bash,docker,apache-kafka,dockerfile,apache-kafka-connect,Bash,Docker,Apache Kafka,Dockerfile,Apache Kafka Connect,我有以下docker文件 FROM confluentinc/cp-kafka-connect:5.3.1 RUN apt-get update && apt-get -y install cron ENV CONNECT_PLUGIN_PATH=/usr/share/java # JDBC-MariaDB RUN wget -nv -P /usr/share/java/kafka-connect-jdbc/ https://downloads.mariadb.com/Co

我有以下docker文件

FROM confluentinc/cp-kafka-connect:5.3.1

RUN apt-get update && apt-get -y install cron

ENV CONNECT_PLUGIN_PATH=/usr/share/java

# JDBC-MariaDB
RUN wget -nv -P /usr/share/java/kafka-connect-jdbc/ https://downloads.mariadb.com/Connectors/java/connector-java-2.4.4/mariadb-java-client-2.4.4.jar

# SNMP Source
RUN wget -nv -P /tmp/ https://github.com/name/kafka-connect-snmp/releases/download/0.0.1.11/kafka-connect-snmp-0.0.1.11.tar.gz
RUN mkdir /tmp/kafka-connect-snmp && tar -xf /tmp/kafka-connect-snmp-0.0.1.11.tar.gz -C /tmp/kafka-connect-snmp/
RUN mv /tmp/kafka-connect-snmp/usr/share/kafka-connect/kafka-connect-snmp /usr/share/java/

COPY plugins-config.sh /usr/share/kafka-connect-script/plugins-config.sh
RUN chmod +x /usr/share/kafka-connect-script/plugins-config.sh

ENTRYPOINT [ "./etc/confluent/docker/run" ]

CMD ["/usr/share/kafka-connect-script/plugins-config.sh"]

bash文件如下所示

#/bin/bash
#使用插件配置kafka connect的脚本
#导出连接\u REST\u播发的\u主机\u名称=本地主机
#导出连接\u剩余\u端口=8083
url=http://$CONNECT\u REST\u advised\u HOST\u NAME:$CONNECT\u REST\u PORT/connectors
curl_command=“curl-s-o/dev/null-w%{http_code}$url”
睡眠时间=5秒
睡眠秒计数器=0
最长等待时间=60秒
echo“正在等待Kafka Connect开始在本地主机上侦听”>>log.log
echo“主机:$CONNECT\u REST\u播发的\u主机名称,端口:$CONNECT\u REST\u端口”>>log.log
而[[$(eval$curl_命令)-eq 000&$sleep_second_计数器-lt$max_seconds_to_wait]]
做
echo“In”>>log.log
echo-e$date“Kafka连接侦听器HTTP状态:”$(eval$curl\u命令)”(等待200)$sleep\u second\u计数器“>>log.log
echo“睡眠时间为$sleep\u秒”>>log.log
睡眠$sleep_秒
echo“已完成睡眠”>>log.log
((睡眠秒计数器+=$sleep秒))
echo“完成计数器”>>log.log
完成
echo“Out”>>log.log
nc-vz$CONNECT\u REST\u播发的\u主机\u名称$CONNECT\u REST\u端口
/bin/bash
正确调用入口点,但未调用CMD

我还试图理解这里给出的解决方案

但我不明白解决办法

如果有人能再解释一下这里的问题

我正在努力实现的目标


我试图有一个docker容器映像,它将启动kafka connect服务器(ENTRYPOINT),然后通过bash文件(CMD)配置插件。要求是每次容器重新启动时都执行相同的步骤序列。

CMD
入口点
后运行,就像函数调用后的参数一样,在同一命令行中运行

在您的情况下,需要两个不同的命令顺序运行。然后,您可以将它们添加到
启动脚本.sh
中,其内容为:

#/bin/bash
/etc/confluent/docker/run&#在后台运行,不要被困在这里
/usr/share/kafka connect script/plugins-config.sh#应用配置
sleep 100000000#以避免退出启动脚本,因为这会杀死容器

最后的
/bin/bash
应该完成什么?我已经更新了我的问题以回答第一个问题。最后添加了/bin/bash,因为在一些堆栈溢出回答中提到,如果我必须阻止容器继续运行,那么就在脚本末尾添加该行,所以我正在尝试各种方法,如您所见:((在这种方法中,请记住,此shell脚本是主容器命令,将接收信号,只要
sleep
命令停止,容器将继续运行。如果Kafka Connect进程停止,您将永远不会注意到。)所以我试图避免睡眠,所以我所做的是#!/bin/bash./usr/share/kafka connect script/plugins-config.sh&./etc/confluent/docker/run,但是现在pluging-config.sh不再运行了如果登录到容器并从命令行运行相同的entrypoint.sh脚本,那么它可以工作,但在docker调用时不工作,有人吗知道为什么吗?@DavidMaze我同意。但是你可以在
中用一个简单的
nc
来监视卡夫卡的健康状况,例如,在
sleep 60
旁边的
中。@somegywhocodes你的第一个脚本退出了吗?如果没有退出,那么你运行的入口点将不会运行。