Док-станция LAMP Stack

Я только изучаю Docker, и мне удалось запустить несколько контейнеров, но я пытаюсь научиться запускать все в отдельных контейнерах. Итак, идея в том, что у меня есть:

  • Mysql Контейнер (рабочий)
  • Контейнер PHP-FPM (частично работает)
  • Apache Container (еще не работает)

Я установил свой стек LAMP на vagrant и протестировал его, используя phpmyadmin. Затем я разделил MySQL на контейнер, и все заработало прекрасно.

Затем я запустил php-fpm, но не могу понять, как заставить Apache использовать его. Мой конфиг явно неправильный, и я понимаю, проблема в том, что я не знаю, как сделать это правильно.

План состоит в том, что после того, как это сработает, я смогу легко переместить Apache и сделать так, чтобы они все хорошо играли вместе.

Я просто использую официальный MySQL: последний, так что это легко.

Я использую Dockerfile с официального php.

FROM php:5.6-fpm
# Install modules
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
&& docker-php-ext-install iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd
CMD ["php-fpm"]

запустить cmd

docker run -d --name php56 -v /var/log/php:/var/docker/php5-fpm -p 127.0.0.1:9000:9000 php56

/etc/apache2/sites-enabled/010-phpmyadmin.conf

<VirtualHost *:80>
ServerName phpmyadmin.docker
ServerAdmin webmaster@localhost
DocumentRoot /var/www/phpmyadmin
ErrorLog ${APACHE_LOG_DIR}/phpmyadmin_error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

/etc/apache2/conf-enabled/php5-fpm.conf

<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -host 127.0.0.1:9000 -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>

Ясно, что «FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi» неверен, так как я запускаю php-fpm для контейнера, а не для локального vagrant, но что это должно быть?

Я прочитал ряд статей о преимуществах наличия отдельных apache / nginx и fpm или наличия fpm и Apache / nginx в одном контейнере. Я рад услышать больше об этом, но я действительно после решения этой проблемы. Я не знаю, буду ли я когда-нибудь использовать это в производстве, но я пытаюсь изучить Docker.

0

Решение

Если вам нужен доступ к файлам из другого контейнера, просто откройте том в контейнере php и запустите контейнер Apache с параметром —volumes-from и укажите его на имени вашего контейнера php, чтобы он мог найти нужный файл .cgi.

0

Другие решения

вы можете проверить мой apache + php5-fpm + mysql + phpmyadmin

там:

https://bitbucket.org/haveapland/docker/src

не выставляйте порты снаружи, используйте ссылки

и если вам нужно запустить скрипт php из оболочки внутри контейнера, просто наберите:

docker exec -it name_of_php_fpm_container bash

остановить все контейнеры:

docker stop $(docker ps -a -q)

удалить все контейнеры:

docker rm $(docker ps -a -q)
0

Вы можете попробовать это:Среда разработки PHP с Docker«Удачи!

0
По вопросам рекламы [email protected]