【发布时间】:2015-12-22 14:52:12
【问题描述】:
我刚刚学习 Docker,我已经设法让一些容器运行起来,但我正在尝试学习如何在单独的容器上运行所有东西。所以,我的想法是:
- Mysql 容器(工作)
- PHP-FPM 容器(部分工作)
- Apache 容器(尚未工作)
我已经在 vagrant 上设置了我的 LAMP 堆栈,并仅使用 phpmyadmin 对其进行了测试。然后我将 MySQL 拆分为一个容器,一切都运行良好。
然后我运行了 php-fpm,但我不知道如何让 Apache 使用它。我理解我的配置显然是错误的,问题是我不知道如何正确设置。
计划是,一旦它起作用,我应该能够轻松地将 Apache 转移过来,让它们一起玩得很好。
我只是使用官方的mysql:latest,所以很简单。
我正在使用来自官方 php 的 Dockerfile。
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"]
运行命令
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。
【问题讨论】:
标签: php apache docker lamp dockerfile