在docker中启动进程后如何运行脚本?

5vf7fwbs  于 2021-06-04  发布在  Kafka
关注(0)|答案(3)|浏览(372)

我想在docker中运行这个命令。

./kafka_2.12-2.2.1/bin/connect-distributed.sh","./kafka_2.12-2.2.1/config/connectdistributed.properties"

此命令启动kafka connect并连接到我的azure事件中心。
连接Kafka之后,我想在docker中运行脚本文件。 ./script.sh 在这个脚本中,检查Kafka是否成功连接。如果未连接,则等待连接。连接完成后,检查xyz名称连接器是否不可用,然后创建它,否则脚本将终止。我可以在本地机器上做这些事情,但我不在docker。

3npbholx

3npbholx1#

运行您的脚本作为后台进程,将继续检查Kafka是否连接。一旦连接,它将运行它的命令和退出,你的主命令将继续运行,docker不会退出
如。

CMD nohup bash -c "script.sh &"  &&  your-command
sbdsn5lh

sbdsn5lh2#

要在docker中运行此命令/Kafka2.12-2.2.1/bin/connect-distributed.sh confluentinc/cp-kafka-connect 图像已经运行了吗
不应在同一台计算机上或容器中的多个进程上运行connect和broker

zf9nrax1

zf9nrax13#

我需要做一些类似的事情,在服务器启动之前等待db初始化,否则它将在整个编写过程完成之前失败/退出。我向服务器添加了一个入口点脚本,如下所示。
我想有一种方法可以调用你的服务并发送命令立即退出。您可能需要在另一个映像上安装基本工具。
所以,我有一个db图像。我需要在服务器映像上安装基本db connect(psql,sqlcmd),以便能够联系我的db容器以确保它正在运行。

host="$1"
shift
cmd="$@"

if [ "${PROVIDER}" == "postgres" ]; then
  echo -e "Running under Postgres"
  until PGPASSWORD=$POSTGRES_PASSWORD psql -h "$host" -U "$POSTGRES_USER" "$POSTGRES_DB" -c '\q'; do
  >&2 echo -e "Postgres is unavailable - sleeping"
  sleep 2
done

# https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker?view=sql-server-ver15

# The IP address in the connection string is the IP address of the host machine that is running the container.

else
  echo -e "Running under Sql Server"
  # sqlcmd -?
  # sqlcmd -S db.mssql -U rust -P  -d rust_test -q "Select * from rust.content_categories"
  # sqlcmd -S 192.168.1.108 -U test -P  -d shortpoetdb -q "Select * from vcc.admin_users"
  until /opt/mssql-tools/bin/sqlcmd -S db.mssql -U "${MSSQL_USER}" -P "${MSSQL_PASSWORD}" -d "${MSSQL_DB}" -q ":exit"; do
  >&2 echo -e "$Mssql is $unavailable - sleeping"
  sleep 2
done
fi

>&2 echo -e "${PROVIDER} Database is up - executing command"
exec $cmd

docker docs等等
ms docs sql server linux安装程序

相关问题