我只是在学习Docker而且我已经设法让一些容器运行,但我正在尝试学习如何在不同的容器上运行所有容器。所以,我的想法是:
我已经在流浪汉上设置了我的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"]
运行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,但应该是什么?
我已经阅读了很多关于在同一容器上使用单独的apache / nginx和fpm或者使用fpm和Apache / nginx的好处的文章。我很高兴听到更多,但我真的解决了这个问题。我不知道我会在制作中使用它,但我正在尝试学习Docker。
答案 0 :(得分:0)
如果你需要从另一个容器访问文件,只需在php容器上公开一个卷,然后用--volumes-from启动你的Apache容器,并将它指向你的php容器的名称,这样就可以找到.cgi文件需要。
答案 1 :(得分:0)
你可以查看我的apache + php5-fpm + mysql + phpmyadmin
有:
https://bitbucket.org/haveapland/docker/src
请勿在外面公开端口,请使用链接
如果你需要从容器内的shell运行php脚本,只需输入:
docker exec -it name_of_php_fpm_container bash
停止所有容器:
docker stop $(docker ps -a -q)
删除所有容器:
docker rm $(docker ps -a -q)
答案 2 :(得分:0)
你可以试试这个:&#34; PHP development environment with Docker&#34; 祝你好运!