在Docker中运行包pipe理器

我已经为PHP开发的目的构build了一个图像,并且我清楚地知道,我没有真正想过如何访问我每天开发所需的工具。 例如:composer,PHP的包pipe理器,每当composer.json更新时,我都需要它运行。 我认为这是值得在同一图像内安装这些工具,但我没有办法访问它们。 所以,我可以:

  1. 为composer php创build单独的图像,并在不同的容器中运行它
  2. 在我的主机上安装composer。

我想避免选项2),但是,它有感觉像1)的设置? 你们是怎么解决这个问题的?

除非你有一些非常具体的要求,否则还有第三种select:

使用docker exec命令连接到容器:

docker exec -it CONTAINER-NAME/ID COMMAND [ARG...] 

这是一个例子:

1:创build你的应用程序:

 echo "<?php phpinfo();" > index.php 

2:启动容器:

 docker run -it --rm --name my-apache-php-app -p 80:80 -v "$PWD":/var/www/html php:5.6-apache 

3:在运行容器中打开另一个terminal窗口并执行exec命令:

 docker exec -it my-apache-php-app curl -sS https://getcomposer.org/installer | php docker exec -it my-apache-php-app ls 

如果你需要运行容器内的shell – 运行:

 docker exec -it my-apache-php-app bash 

而已!