我已经为PHP开发构建了一个图像,但很明显,我并没有真正考虑如何访问每天开发所需的工具。例如:composer, PHP的包管理器,我需要它在编写时运行。json更新。我认为在同一个映像中安装这些工具是值得的,但是我没有办法访问它们。所以,我可以:
- 为composer创建单独的图像并在不同的容器中运行
- 在我的主机上安装composer。
我想避免选项2),但是,有一个像1)的设置有意义吗?你们是怎么解决这个问题的?
除非你有一些非常特殊的要求,否则还有第三个选择:
使用docker exec命令连接到容器:
docker exec -it CONTAINER-NAME/ID COMMAND [ARG...]
示例如下:
1:创建应用程序:
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:打开另一个终端窗口,在正在运行的容器中执行所需的命令:
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
就是这样!