【发布时间】:2015-08-19 01:54:12
【问题描述】:
我正在开发一个我希望使用 docker 容器运行的 PHP 应用程序。我正在使用composer 包管理器,它引入了所有依赖项。除依赖项外,所有代码都保存在 git 存储库中。
为了让所有东西都在我的本地机器上运行,我使用了 docker-compose(图)。我将我的应用程序代码(包括供应商文件夹)安装到容器上的卷中。这是我的 docker-compose.yml 文件。
nginx:
image: nginx:1.9
links:
- php
volumes:
- conf/nginx/default.conf:/etc/nginx/conf.d/default.conf
- src:/var/www/html
ports:
- "80:80"
php:
image: php:5.6.9-fpm
links:
- memcached
volumes:
- conf/php/php.ini /usr/local/etc/php/php.ini
- src:/var/www/html
volumes_from:
- nginx
我不太明白如何将其推入生产或暂存环境。据我了解,最好将所有东西都放在一个容器中,而不必运行包管理器,因为这可能会失败,或者这些包可能与我本地机器上的包不同。所以我想出了以下 docker-compose.yml 文件:
webapp:
image : quay.io/myusername/myrepo
php:
image: php:5.6.9-fpm
volumes:
- config/php/php.ini /usr/local/etc/php/php.ini
volumes_from:
- webapp
nginx:
image: nginx:1.9
links:
- php
volumes:
- config/nginx/default.conf:/etc/nginx/conf.d/default.conf
volumes_from:
- webapp
ports:
- "80:80"
webapp 容器是从以下 dockerfile 构建的,并托管在某个存储库中。
FROM busybox
VOLUME /var/www/html
ADD src /var/www/html
我有一个 git 钩子,它将触发在 quay.io 上构建此 dockerfile 并将我的源代码添加到图像中。
问题是:供应商文件/依赖项不在版本控制中,因此不会被添加。
我看到了两个我都觉得不理想的解决方案。
- 将依赖项添加到版本控制。
- 运行命令
composer install拉入所有文件。如上所述不是优选的。
我对 docker 还是很陌生,所以可能是我搞错了。很想得到一个答案如何正确地做到这一点。
【问题讨论】:
标签: php docker composer-php docker-compose