如何为docker-compose运行容器实现快速运行的别名命令?

时间:2018-02-02 07:24:29

标签: bash shell docker docker-compose

我有一个docker-compose.yml配置文件,由docker-compose up启动就好了。

现在,随着应用程序结构变得越来越复杂,我希望能够在正在运行的实例中运行一些任务。

我知道我可以通过docker exec -i -t <container_id> /bin/bash进入容器,然后在那里运行一些shell命令。

有没有办法链接一些&#39; .sh&#39;容器内的文件并运行它,例如像docker-compose runscript updatedb.sh?还有什么其他选择?

2 个答案:

答案 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>