如何在Docker容器中执行命令作为bash shell脚本的一部分

我想写一个bash脚本来自动执行以下操作:

进入正在运行的容器

docker exec -it CONTAINER_NAME /bin/bash 

执行一些命令:

 cat /dev/null > /usr/local/tomcat/logs/app.log exit 

有问题的部分是当docker exec被执行时。 新的shell被创build,但其他命令不被执行。

有没有办法解决它?

您可以将heredoc docker exec命令与heredoc一起使用:

 docker exec -i CONTAINER_NAME bash <<'EOF' cat /dev/null > /usr/local/tomcat/logs/app.log exit EOF 

要使用variables:

 logname='/usr/local/tomcat/logs/app.log' 

然后用作:

 docker exec -i CONTAINER_NAME bash <<EOF cat /dev/null > "$logname" exit EOF 

你可以简单地启动

docker exec -it container_id cat /dev/null > /usr/local/tomcat/logs/app.log