Tag: PHP

从PHP启动Docker容器

当我尝试通过PHP启动Docker容器时,出现以下错误 level="fatal" msg="Get http:///var/run/docker.sock/v1.16/containers/json?limit=1: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?" 我尝试通过shell_exec执行docker run命令,因此Ubuntu 14.04上的执行用户是www-data。 对于好的措施,我试图运行docker命令作为sudo,但没有任何区别。 search“您正在尝试….”出现几个链接,可能有一些相关的信息 – 例如在这里 – 但我还没有能够很好地理解它。 也是为了好的措施,我输出docker comamnd我试图执行stderr,复制它并通过SSH直接执行它。 这是命令 docker run -h user118 -d -p 8406:443 -v /var/docks/user118/logs:/var/log/apache2 -v /var/docks/user118/mysql:/var/lib/mysql -v /var/docks/user118/redis:/var/lib/redis -v /var/docks/user118/secure:/var/secure -v /var/docks/user118/site:/var/www/html lamp 其次是 docker ps -a 然后浏览到该容器 […]

Docker容器中的Nginx不会运行PHP

我是Docker的初学者,我试图构build自己的图像:Ubuntu + Nginx + PHP。 所以,我有一个名为test的目录。 在目录里面的两个其他目录, 应用程序和网站启用 。 另外,还有一个Dockerfile,内容是: FROM ubuntu:trusty RUN apt-get update && \ apt-get install -y nginx php5-fpm php5-mysql php-apc php5-imagick php5-imap php5-mcrypt php5-gd libssh2-php && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* RUN echo "daemon off;" >> /etc/nginx/nginx.conf ADD sites-enabled/ /etc/nginx/sites-enabled/ ADD app/ /app/ EXPOSE 80 CMD ["php5-fpm", "-c", […]

Envvariables在静态xml文件中

我刚开始使用Docker,我发现它很棒。 我试图为Magento构build一个2容器环境,第一个容器为apache,第二个为mysql。 我把这两个容器连接在一起,我在apache容器上安装了Magento,用作DB Host的Mysql容器。 我从apache容器中input“env”的envvariables获得链接的mysql容器的ip。 它工作正常,但问题是,Magento将mysql服务器的IP保存在local.xml文件中。 如果我重buildmysql容器它获得一个新的IP地址和magento停止工作,直到我更新local.xml文件。 工作在PHP设置文件(即在WordPress)我可以使用函数getenv("MYSQL_PORT_3306_TCP_ADDR")来dynamic获得正确的IP地址,但如果它被保存在一个静态文件的XML文件,如Magento中,我该怎么办?

如何在Docker镜像上启动服务?

我为图像创build了一个Dockerfile来在FPM + Nginx上运行PHP7,但是我无法获得正确启动服务的图像。 这应该如何完成? 以下是我目前正在做的部分: CMD service php7-fpm start; \ service php7-fpm status; \ service nginx start; \ service nginx status

docker化的PHP应用程序体系结构最佳实践

我很新的做Docker。 在我的开发环境中,我和Docker玩了很多,但是我试图只部署一次真正的应用程序。 我已经阅读了大量的文件,并观看了一些video,但仍然有很多问题。 我明白,Docker只是一个可以以多种不同方式使用的工具,但现在我正在试图find开发和部署Web应用程序的最佳方法。 我将使用真正的PHP应用程序案例,使我的问题更加具体和实用。 为了简单起见,我们假设我正在构build一个非常简单的PHP应用程序,所以我需要: Web服务器(nginx) PHP解释器(php-fpm或hhvm) SESSION的持久存储 我能find的最好的例子/教程是这个一年前的post 。 迪伦提出了这种结构: 他对整个PHP项目文件和日志以及docker-compose使用Data Only容器来运行具有适当链接的所有这些图像。 在开发环境我将挂载一个主机目录作为数据量和生产我将文件直接复制到数据只有图像和部署。 这是可以理解的。 我希望通过nginx和php-fpm共享数据。 nginx需要访问静态文件(.img,.css,.js …), php-fpm需要访问PHP文件。 而且这两个服务是分开的,所以可以独立更新/更改。 只有数据的容器通过–volumes-from选项共享一个链接到nginx和php-fpm的data volume 。 但据我所知,Data Only容器和-v标志有问题。 官方的Docker文档说data volume是专门指定的目录来保存数据! 据说 即使容器本身被删除,数据量仍然存在。 所以这个解决scheme非常适合我不想像会话文件,数据库存储,日志等那样松动的数据。但是对于我的代码文件来说,不是吗? 我想改变我的代码文件。 我想部署更改,而不重buildnginx和php-fpm图像。 另一个问题是,当我尝试这种方法时,我不能部署代码更改,直到我停止所有正在运行的容器,删除它们及其图像并完全重build它们。 只是重build和部署数据只有图像什么都没做! 当数据直接存储在Interpreter容器中时,我已经看到了一些其他的实现,但是这不是一个选项,因为我需要nginx来访问这些文件。 问题是在哪里放置我的项目代码文件以及如何为这种应用程序部署更改的最佳做法是什么? 谢谢。

重build后文件更改不会反映在Docker镜像中

我试图为我的PHP web应用程序(php-fcm)设置两个Docker镜像,由NGINX反向代理。 理想情况下,我希望将Web应用程序的所有文件复制到基于php-fcm的映像中,并将其作为卷展示。 这样,两个容器(网页和应用程序)都可以通过NGINX服务静态文件和php-fcm来解释php文件。 泊坞窗,compose.yml version: '2' services: web: image: nginx:latest depends_on: – app volumes: – ./site.conf:/etc/nginx/conf.d/default.conf volumes_from: – app links: – app app: build: . volumes: – /app Dockerfile: FROM php:fpm COPY . /app WORKDIR /app 上述设置按预期工作。 但是,当我对文件做任何改变,然后做 compose up –build 新的文件不会在结果图像中拾取。 尽pipe以下消息表明图像确实正在重build: Building app Step 1 : FROM php:fpm —> cb4faea80358 Step 2 […]

Docker:phpize找不到config.m4

我在Windows 7上使用Laradock 。我需要安装bz2扩展,所以我编辑了如下的php-fpm Dockerfile-70。 添加下面的代码 – ARG INSTALL_BZ2=true RUN if [ ${INSTALL_BZ2} = true ]; then \ # Install the bz2 extension pecl install bz2 && \ docker-php-ext-enable bz2 \ ;fi 然后当我运行docker-compose build php-fpm我得到几个下面的错误。 我做了谷歌search,并尝试build议,迄今没有任何工作。 运行:phpize 找不到config.m4。 确保在模块的顶级源目录中运行“/ usr / local / bin / phpize” 错误:“phpize”失败 请在这方面咨询。

如何正确设置数据卷容器?

我想设置一个数据卷容器与另一个LAMP容器一起工作,但我开始与Docker一起工作,所以我有一些疑虑。 所以我将运行两个容器,我们将其命名为(仅作为示例): 灯容器 数据容器 我知道一次运行多个容器的唯一方法是使用Docker Compose,但我不知道如何设置compose.yml文件。 让我们说lamp-container有它存储数据的以下目录: /data/www # meant to contain web content /data/www/default # root directory for the default vhost /data/logs/ # Nginx, PHP logs /data/tmp/php/ # PHP temp directories 我想将它们分别映射到/home/<username>/container_files (这是运行docker的主机上的本地目录)下的主机上的本地目录。 例如: /data/www => /home/<username>/container_files/data/www /data/www/default => /home/<username>/container_files/data/www/default /data/logs/ => /home/<username>/container_files/data/logs /data/tmp/php/ => /home/<username>/container_files/data/php 任何一点都可以用compose.yml示例文件指向正确的方向? 我已经阅读文档,但对我来说很困惑,因为我通常使用虚拟机,并在许多方面与容器不同。 注意:我应该补充说,这是一个主机中的一个用户而不是一个主机中的多个用户。 所以每个想要使用这个设置的人都应该有自己的主机下的设置。

在主机上设置PhpStorm和Docker for PHP开发,不使用PHP

我想使用PhpStorm(实际上是IntelliJ与PHP插件)来开发我的PHP软件。 我一直在使用Linux笔记本电脑,PHP 5.5和Oracle库。 这是非常困难的设置,我有一些兼容性问题。 我现在有一台MacBook,我需要设置开发环境。 我想尝试和使用Docker的开发,这应该让我有不同的PHP版本没有交互。 但我仍然想使用PhpStorm,如果可能的话,我不想在主机上安装PHP,以保持清洁。 有没有一种方法来设置PhpStorm在docker机器内使用PHP解释器,所以我不需要在主机上安装PHP? 我用这个作为指导,现在我试图按照这个来设置PHP解释器。

Docker – 如何在docker-compose.yml中设置Apache + PHP

我使用这个来设置PHP的nginx: nginx: image: nginx:latest ports: – 8080:80 volumes: – ./code:/code – ./site.conf:/etc/nginx/conf.d/site.conf links: – php php: image: php:7-fpm volumes: – ./code:/code 但是Apache呢? 如何在docker-compose.yml中设置Apache + PHP? 遵循本指南 : version: '2' services: php: build: php ports: – "80:80" – "443:443" volumes: – ./php/www:/var/www/html 错误: ERROR: In file './docker-compose.yml' service 'version' doesn't have any configuration options. All top […]