Одним из решений является добавление дополнительных экземпляров php-fpm в ваш файл docker-compose, а затем использование восходящего потока nginx, как упоминалось в других ответах, для балансировки нагрузки между ними. Это делается в этом примере репозитория docker-compose: https://github.com/iamyojimbo/docker-nginx-php-fpm/blob/master/nginx/nginx.conf#L137
upstream php { #If there's no directive here, then use round_robin. #least_conn; server dockernginxphpfpm_php1_1:9000; server dockernginxphpfpm_php2_1:9000; server dockernginxphpfpm_php3_1:9000;}
На самом деле это не идеально, потому что для этого потребуется изменить конфигурацию nginx и docker-compose.yml, когда вы захотите увеличить или уменьшить масштаб.
Обратите внимание, что порт 9000 является внутренним для контейнера, а не для вашего фактического хоста, поэтому не имеет значения, что у вас есть несколько контейнеров php-fpm на порту 9000.
Docker приобрел Tutum этой осенью. У них есть решение, которое объединяет контейнер HAProxy с их api для автоматической настройки конфигурации балансировщика нагрузки в соответствии с запущенными контейнерами, которые он балансирует. Это хорошее решение. Затем nginx указывает на имя хоста, назначенное балансировщику нагрузки. Возможно, Docker продолжит интегрировать этот тип решения в свои инструменты после приобретения Tutum. Здесь есть статья об этом: https://web.archive.org/web/20160628133445/https://support.tutum.co/support/solutions/articles/5000050235-load-balancing-a-web-service
Tutum в настоящее время является платной услугой. Rancher - это проект с открытым исходным кодом, который предоставляет аналогичную функцию балансировки нагрузки. У них также есть "rancher-compose.yml", который может определять балансировку нагрузки и масштабирование настроек служб в docker-compose.yml. http://rancher.com/the-magical-moment-when-container-load-balancing-meets-service-discovery/ http://docs.rancher.com/rancher/concepts/#load-balancer
ОБНОВЛЕНИЕ 2017/03/06: я использовал проект под названием блокировка это работает с Docker для автоматического обновления конфигурации nginx и ее перезапуска. Также смотрите статью @iwaseatenbyagrue ответ который имеет дополнительные подходы.