我有一个docker-compose.yml
配置文件,由docker-compose up
启动就好了。
现在,随着应用程序结构变得越来越复杂,我希望能够在正在运行的实例中运行一些任务。
我知道我可以通过docker exec -i -t <container_id> /bin/bash
进入容器,然后在那里运行一些shell命令。
有没有办法链接一些&#39; .sh&#39;容器内的文件并运行它,例如像docker-compose runscript updatedb.sh
?还有什么其他选择?
答案 0 :(得分:0)
您可以将脚本放在容器中,然后使用docker-compose运行它们。
假设您的docker-compose service
被称为myservice
并且您在script1.sh
文件夹中放置了一个名为/scripts
的脚本并具有执行权限,您可以在主机上运行类似的内容:
docker-compose exec myservice /scripts/script1.sh
答案 1 :(得分:0)
docker-compose exec它是在容器内执行某些东西的唯一方法,所以任何需要在一个ruuning容器上执行的东西都需要使用这个命令。
解决方案是在.bash_rc
个人资料中创建一个bash功能,例如:
docker-exec-sh(){
docker exec -it "$1" "$2"
}
然后从命令行运行:
docker-exec-sh <container-id> <shell-script-executable>