容器内多进程方法

容器内多进程方法

思路:容器启动时启动脚本,脚本内写好你需要启动的进程
(第一个进程需要放在后台运行,不然脚本后面的命令就无法运行了,最后一个进程需要放在前台运行,结束即容器销毁)
场景:需要将容器内日志通过flume推送至kafka,flume用的华为的MRS组件

实现:

1.修改Dockerfile,增加脚本,wget客户端包,修改启动命令为启动脚本
2.构建镜像

脚本内容:

#!/bin/bash
# Start the first process
ln -s /usr/local/openjdk-8 /usr/local/java-se-8u41-ri
chmod  755 -R /flume/fusioninsight-flume-1.9.0/bin/*
nohup bash /flume/fusioninsight-flume-1.9.0/bin/flume-manage.sh start &
ps aux |grep flume |grep -q -v grep
PROCESS_1_STATUS=$?
echo "flume status..."
echo $PROCESS_1_STATUS
if [ $PROCESS_1_STATUS -ne 0 ]; then
echo "Failed to start my_first_process: $PROCESS_2_STATUS"
exit $PROCESS_1_STATUS
fi
sleep 5


# Start the second process
java -jar /data-0.0.1-SNAPSHOT.jar --spring.profiles.active=test
ps aux |grep data-0.0.1-SNAPSHOT.jar |grep -q -v grep
PROCESS_2_STATUS=$?
echo "data status..."
echo $PROCESS_2_STATUS
if [ $PROCESS_2_STATUS -ne 0 ]; then
echo "Failed to start my_second_process: $PROCESS_2_STATUS"
exit $PROCESS_2_STATUS
fi
# 每隔60秒检查进程是否运行
while sleep 60; do
ps aux |grep thread1 |grep -q -v grep
PROCESS_1_STATUS=$?
ps aux |grep thread2 |grep -q -v grep
PROCESS_2_STATUS=$?
# If the greps above find anything, they exit with 0 status
# If they are not both 0, then something is wrong
if [ $PROCESS_1_STATUS -ne 0 -o $PROCESS_2_STATUS -ne 0 ]; then
echo "One of the processes has already exited."
exit 1
fi

目前是用的这种方式实现的,自己记录分享一下,脚本也是从网上搞来自己修改的,有更好的建议非常欢迎留言告知!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想见感

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值