我使用docker-compose创建一组类似于Laravel Homestead环境的容器,当然可以根据我的需要进行调整。所以我有以下容器:
[我将发布下面的docker-compose.yml]
正如你所看到的,我在这里有很多容器可以相互通信,有时我需要在其中运行命令。例如,有时我需要在php artisan ...
容器中运行php_queue
命令或在nodejs容器中运行gulp
。
所以我现在所做的是docker exec
到每个容器中,然后运行必要的命令。但它非常烦人,因为我不得不在PHP和JS容器之间不断切换,很容易混淆它们。
是否可以从一个地方(无论是主机还是主机)访问必要的脚本(gulp
,php artisan
,npm
,composer
等)另一个容器?</ p>
我想添加另一个安装了所有引擎的容器(PHP和nodejs),所以我可以SSH或docker exec
进入该容器并运行任何必要的东西。如果那是唯一可行的解决方案,那听起来也不错,但我想探索各种选择。
搬运工-compose.yml
version: '2'
services:
nginx:
build: ./nginx/
ports:
- 80:80
- 443:443
depends_on:
- php_fpm
- sockets
links:
- php_fpm
- sockets
volumes_from:
- app
php_fpm:
build:
context: ./php/
expose:
- 9000
links:
- mysql
- redis
volumes_from:
- app
php_queue:
build:
context: ./php/
links:
- mysql
- redis
volumes_from:
- app
command: "php /var/www/koodzo/artisan queue:work --daemon"
app:
image: php:7.0-fpm
volumes:
- ../Sources:/var/www/koodzo
command: "true"
mysql:
image: mysql:5.7
ports:
- 3306:3306
volumes:
- ../Database:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: koodzo
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
sockets:
build: ./sockets
expose:
- 6001
volumes_from:
- app
command: "node /var/www/koodzo/sockets/server.js"
redis:
image: redis:3.2
expose:
- 6379
答案 0 :(得分:1)
您知道可以使用exec实际运行命令吗?这样你就可以在docker-compose.yml中命名不同的容器,然后运行一个脚本,使用docker exec按容器名执行所有命令。