Tag: PHP

限制对Docker容器内容的访问

是否有可能禁止附加到Docker容器或以其他方式限制对容器文件内容的访问? 用例是一个PHP应用程序的分布,不希望允许用户访问或修改应用程序的文件。 如果Docker无法做到这一点,那么有没有更好的适合这个用例的虚拟机的select?

用php和docker创buildweb应用程序

我有以下的DOCKERFILE : FROM php RUN apt-get update && apt-get install -y git RUN git clone https://github.com/marcosh/webinthemiddle.git EXPOSE 80 CMD php -S localhost:80 webinthemiddle/index.php 我想用php创build一个非常基本的应用程序。 我使用sudo docker build -t marcosh/webinthemiddle .构build图像sudo docker build -t marcosh/webinthemiddle . 然后我试着运行容器使用 sudo docker run -d -P marcosh/webinthemiddle 要么 sudo docker run -d -P marcosh/webinthemiddle php -S localhost:80 webinthemiddle/index.php 然后,我检查与sudo docker […]

在Docker中运行包pipe理器

我已经为PHP开发的目的构build了一个图像,并且我清楚地知道,我没有真正想过如何访问我每天开发所需的工具。 例如:composer,PHP的包pipe理器,每当composer.json更新时,我都需要它运行。 我认为这是值得在同一图像内安装这些工具,但我没有办法访问它们。 所以,我可以: 为composer php创build单独的图像,并在不同的容器中运行它 在我的主机上安装composer。 我想避免选项2),但是,它有感觉像1)的设置? 你们是怎么解决这个问题的?

Docker组成Apache不工作

我试图运行一个容器使用docker撰写。 我已经使用普通的泊坞窗命令,它的工作原理,但是当我做同样的使用泊坞窗撰写它没有按预期工作。 我使用docker compose build命令编译图像: docker-compose build php 并为docker和docker-compose命令使用该映像。 docker run -p 80:80 -v /navicu docker_php docker-compose up php 我改变了其中一个容器的端口,以免它们崩溃。 例如:docker上的80端口和docker上的800端口。 问题是,无论我做什么,docker组成容器不能按预期工作。 它不会让本地主机上的连接(它显示500错误)。 另一方面,docker容器允许连接并按预期显示页面。 这是docker-compose.yml: php: build: . ports: – "80:80" volumes: – ./navicu:/navicu PD:Dockerfile使用php-apache官方镜像并添加一个vhost.conf文件。

Docker组成wordpress插件

这是我的docker-compose.yml到目前为止: wordpress: image: wordpress links: – db:mysql ports: – 8080:80 net: "bridge" dns: – 8.8.8.8 – 4.4.4.4 db: image: mysql environment: MYSQL_ROOT_PASSWORD: biersaufen 有没有办法直接安装wordpress插件? (直接意味着我可以通过docker-compose.yml来安装它)

在symfony中更新数据库模式时发生exception

对于Symfony和Doctrine来说,我是一个新手,因此在不久的将来我将需要在商业上开展一些代码的工作。 长话短说,我现在正在修改现有实体以添加新参数。 我已经更新了ORM注释来表示这个,据我所知,如果我运行以下: php app/console doctrine:migrations:diff 这应该会自动更新数据库表以添加一个新的列来容纳我的新属性。 但是,当我运行它时,我得到以下错误: [Doctrine\DBAL\Exception\ConnectionException] An exception occured in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known 它可能值得注意的是,当您通过浏览器中的表单与它进行交互时,项目已经成功与数据库通信,所以我很困惑为什么会出现这个错误? 我也在Docker容器上运行数据库,我认为这可能是造成这个错误的原因。 有任何想法吗?

如何在主机上访问docker容器内运行的unit testing的xdebug会话?

我有一个PHP应用程序使用hhvm在Docker容器中运行。 我的IDE是在本地主机上运行的phpstorm,我设置了xdebug。 我的/etc/hhvm/php.ini部分看起来像: ; xdebug hhvm.debug.server_error_message = true xdebug.enable=1 xdebug.remote_enable=1 xdebug.idekey="PHPSTORM" xdebug.remote_port = 9999 xdebug.remote_autostart=1 xdebug.remote_connect_back=1 xdebug.remote_handler=dbgp xdebug.remote_log="/var/log/xdebug/xdebug.log" 而在我的nginx conf中,我不得不添加指定服务器名称以匹配我的反向代理。 反向代理在我的本地主机上运行,​​并将容器的IP(例如127.0.0.1:8080映射到可读的http://my_app.local 。 nginx conf条目看起来像这样: cat nginx/conf.d/my_app.conf server { listen 80 default_server; server_name my_app.local; root /var/www/my_app/web; index index.php index.html index.htm; include hhvm.conf; error_log /var/log/nginx/sandbox/error.log; access_log /var/log/nginx/sandbox/access.log main; location /status { return 200; access_log off; } location […]

系统在docker集装箱中

我有一个与Ubuntu 14.04服务器(不使用systemd),我使用HHVM,但我想现在使用PHP 7。 我在想,为什么不使用php7.0-fpm的容器,这应该工作。 我第一次尝试与一个centos 7(使用systemd)容器,我可以安装一切,但问题是当我尝试启动服务,我得到这个:“无法获得D-Bus连接:操作不允许” 最后,我使用了一个Ubuntu 14.04容器,我用fpm安装了php7,但是它能正常工作,但是每当我想要使用systemd的容器时,都会遇到这个问题。 (和相反的情况) 谢谢 :)

PHP应用程序开始与docker工作缓慢

我相信这是一个普遍的问题。 但是仍然希望得到一些有用的build议。 所以我使用vagrant来运行我们的php应用程序,我们使用postgres,rabbitmq和memcached。 我build立了docker环境。 这是我的docker-compose.yml web: build: app ports: – "80:80" volumes: – /Users/ihorsamusenko/my/project:/var/www/app links: – db – rabbit – memcached db: build: postgres ports: – 5432:5432 environment: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres rabbit: image: rabbitmq memcached: image: memcached 但是,这样的安装应用程序开始工作比以前慢得多。 我明白,可能我的问题是特定于应用程序的。 但是,也许有这样的问题一些常见的提示。

将环境variables暴露给Apache和PHP

背景 我正在尝试使用Wercker来运行我的PHP应用程序的testing。 Wercker使用Docker容器来设置testing环境来执行testing。它使用环境variables来公开任何连接服务(如MySQL和Elasticsearch)的连接参数。 示例MYSQL_PORT_3306_TCP_ADDR = 127.0.1.1 我的核心Docker容器运行Ubuntu 14.04,PHP和Apache已经安装在容器上。 问题 我似乎无法通过php $ _SERVER或$ _ENV通过Apache运行时访问环境variables。 如果我通过CLI php ./db_connect.php运行脚本,或者如果我使用其在服务器php -S localhost:8000版本运行PHP,它工作正常。 但是,如果我尝试通过Apache虚拟主机访问一个页面,则环境variables不可用。 进展 我已经安装了Apache,用于允许环境variables的mod“我认为” sudo a2enmod env sudo service apache2 restart 我试图访问我的脚本中的环境variables。 $database_host = $_SERVER["MYSQL_PORT_3306_TCP_ADDR"]; $database_username = $_SERVER["MYSQL_ENV_MYSQL_USER"]; $database_password = $_SERVER["MYSQL_ENV_MYSQL_PASSWORD"]; $database_name = $_SERVER["MYSQL_ENV_MYSQL_DATABASE"]; $elasticsearch_host = $_SERVER["ELASTICSEARCH_PORT_9300_TCP_ADDR"]; 我可以在我的.htaccess中添加新的variables,我只是没有得到所有的系统环境variables。 SetEnv TEST_VAR test 我已经读过这个问题如何在运行CLI和Apache2Handler时将系统环境variables导入到PHP中? 但我不确定它的build议。 题 如何将系统环境variables暴露给Apache和PHP?