【发布时间】:2016-05-02 12:30:19
【问题描述】:
我正在使用 docker compose 为我的网站创建基本环境(目前仅在本地,所以我不关心安全问题)。目前我正在使用 3 个不同的容器”
- 对于 nginx
- 为 php
- 对于mysql
我显然可以登录到任何容器来运行命令。例如,我可以 ssh 到 php 容器以验证 PHP 版本或运行 PHP 脚本,但问题是 - 是否有可能进行这样的配置,以便我可以从运行的所有容器(例如一个 SSH 容器)运行命令?
例如我想运行这样的命令:
php -v
nginx restart
mysql
在为所有服务登录到一个通用 SSH 之后。
有可能吗?我知道有exec 命令,所以我可以在容器的每个命令名称之前添加,但它的使用不够灵活,如果容器更多,它会越来越困难。
所以问题是 - 有没有可能,如果有,如何实现?
【问题讨论】:
-
一般来说你不需要在你的容器中运行
sshd;docker exec是一个更好的主意,因为它不需要在每个容器内运行 Yet Another Service。 -
@larsks 理论上是正确的,但是例如调试呢?我需要 SSH 在我的 IDE 中毫无问题地进行调试。我刚刚使用 SSH 设置了另一个容器,我可以 ssh 进入它,但我不知道是否有可能以某种方式从所有其他容器运行命令。另外,如果我为 gulp 运行另一个容器怎么办?要运行 gulp,我需要在一个容器中运行
docker exec,对于php,我需要在另一个容器中运行docker exec。 -
为什么需要 SSH 才能在 IDE 中进行调试?你能更详细地描述你的用例吗?要回答您问题的第一部分,您可以使用 Makefile 自动执行常见任务。
标签: docker docker-compose