繁体   English   中英

Docker LAMP堆栈

[英]Docker LAMP Stack

我只是在学习Docker,并且设法使用了一些容器,但是我正在尝试学习如何在单独的容器上运行所有内容。 所以,我的想法是:

  • MySQL容器(工作)
  • PHP-FPM容器(部分工作)
  • Apache容器(尚无法使用)

我已经在流浪汉上设置了我的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。

如果您需要从其他容器访问文件,只需在php容器上公开一个卷,然后使用--volumes-from启动Apache容器,然后将其指向您的php容器的名称,以便可以找到所需的.cgi文件。

您可以检查我的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)

您可以尝试:“ 使用Docker的PHP开发环境 ”祝您好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM