Tag: PHP

在Docker容器中运行的脚本报告的内存要比外部高得多

我正在运行一个PHP cli脚本进行数据导入。 它定期检查其内存使用情况,如果它接近极限,则会优雅地轰炸。 if ($percentage = (memory_get_usage() / ini_get('memory_limit')) > 0.95) { $message = sprintf("%s Memory used %d Mb of %d Mb", ImportException::MEMORY_LIMIT_REACHED, (memory_get_usage() / 1024/1024), (ini_get('memory_limit') / 1024/1024)); $this->logger->emergency($message); throw new ImportException($message); } 在OSX(El Capitan iMac 3.5Ghz i7)上通过自制PHP CLI(v5.6.18)运行时,脚本运行良好,内存使用率从未超过100MB左右 现在,我正在尝试在同一个iMac上从VirtualBox VM启动的Docker容器中运行脚本。 VirtualBox虚拟机有2048MB的内存,运行这个脚本的Docker容器也是一样的。 至关重要的是,PHP脚本报告与Docker统计数据相同的大量内存使用情况,并导致脚本在消耗近2GB后提早popup。 Docker容器内的PHP CLI版本是相同的。 我相信这必须与docker转换内存使用情况报告的方式有关,后者又被http://php.net/manual/en/function.memory-get-usage.php php报告方法。 Mac上的进程不会显示高使用率。 我只是不太了解虚拟化与Docker的复杂性。 有一个可靠的系统调用,我可以使用(通过passthru())获得“真实”的内存使用情况? 正如所build议的,我在同一个(Ubuntu 14.04)有docker和我的容器的虚拟机VM中安装了PHP。 再次运行脚本显示与OSX相同的行为,即内存使用率不超过100MB。 上面的图片显示了在Docker容器(1.306g)内运行的脚本和在VM(〜83Mb)上运行的脚本的顶部运行。 […]

如何在Laravel的Docker容器中运行和安装Protractor E2Etesting?

我在dockervel中开发了我的LAravel AngularJS应用程序。 我必须使用量angular器中的e2etesting来testingAngularJS,之后我必须提供包括e2etesting的应用程序。 在这个dockervel我有 包括容器 Nginx 1.8.0 & PHP 5.6 running in Alpine MariaDB 5.5 running in Alpine Redis running in Alpine Composer PHP running in Alpine. Artisan running in Debian (alpine is missing some PHP packages) NodeJS with gulp, grunt and bower -g installed in official node:4.2.2-slim base image Volumes mounted as containers dockervel中的别名: […]

如何用Docker加载mysql扩展dockerfile,用Pfm和Nginx和Mysql编写

我是Docker&Compose的新手。 我用nginx,fpm&mysql创build了一个Docker.yml文件。 docker-compose.yml运行时没有错误 我可以执行php命令(即在浏览器中查看php命令的结果),但是我不能执行mysqli命令。 phpinfo.php显示“–enable-mysqlnd”,它似乎被安装。 configuration文件(php.ini)path/ usr / local / etc / php是没有任何php.ini …我不知道该怎么做才能得到这个MySQL命令的工作。 我想我可能需要为PHP创build一个Dockerfile并在提取它们之后添加mysql扩展…但是不确定是否需要….或者如何正确执行 – 感谢您的帮助! 撰写文件,运行并启动3 Docker包含我可以连接到: 泊坞窗,compose.yml version: '2' services: web: image: nginx:latest ports: – "80:80" volumes: – ./code:/code – ./site.conf:/etc/nginx/conf.d/default.conf networks: – code-network links: – php php: image: php:fpm volumes: – ./code:/code networks: – code-network links: – db db: image: mysql:5.7 […]

在Docker中保留Symfony2应用程序开发的环境variables值

我有一个在Docker容器中运行的Symfony2应用程序。 parameters.yml文件被设置为挑选环境variables,如下所示: framework: secret: "%env.secret%" … Docker撰写文件的内容是: services: my-website: env_file: my-website.env build: . expose: – "80" volumes: – .:/app 环境variables文件是: SYMFONY__ENV__SECRET=1234567890 … 一切工作正常,当通过“app.php”访问。 然而,当在开发模式(通过app_dev.php)访问它无法挑选环境variables。 有没有办法使用环境variables? 我不想创build具有硬编码值的另一个parameters.yml文件。 比你!

TravisCI泊坞窗权限

我使用Docker来运行我的PHP应用程序。 现在我想让Travis CI来testing我的应用程序。 但是,我所有的构build失败,因为容器无法打开我的应用程序的/ temp目录中的文件。 我有数据容器: FROM ubuntu COPY ./ /project VOLUME /project CMD ["true"] 我用我自己的PHP fpm容器基于php:7.0-fpm – 只有安装了一些扩展。 同样的nginx。 我的docker写作看起来像这样 version: '2' services: data: build: ./ volumes: – .:/project command: "true" nginx: image: myNginx ports: – "80:80" – "443:443" volumes_from: – data links: – php php: image: myPhp ports: – "9000:9000" volumes_from: – data […]

创build一个docker-mongo + memcache + ES的PHP驱动程序

我是新来的Docker,我试图dockerize现有的应用程序。 目前该应用程序是一个全function于一身的机器,它具有PHP服务器和Web应用程序以及mongo + memcache +弹性search。 我想要具有以下内容:1.基于安装PHP的Web应用程序的容器。 我认为,nimmis / apache-php5可以是一个不错的select。 但是我也需要在这个容器中使用mongo,elastic-search和memcache的PHP驱动程序,而且我不能让所有的东西都起作用。 2. MongoDB的容器(使用最stream行的https://hub.docker.com/_/mongo/)3 .用于弹性search的容器4.用于memcache的容器。 我想把它全部包装在一个像这样的docker撰写文件(这不是一个工作的例子,因为我没有驱动程序 version:'2' services: web: build:. volumes: -.:/var/www/web ports: -"80:80" links: -db:mongo -redis -memcached:memcached -elk db: image:mongo:latest ports: -"27017:27017" redis: image:bitnami/redis:latest ports: -"6379:6379" elk: image:sebp/elk ports: -"5601:5601" -"9200:9200" -"5044:5044" memcached: image:memcached:latest ports: -"11211:11211" 我也明白,在我的代码中,我将不得不将我的本地主机引用replace为我在链接中给出的别名(如db)。 一旦我将移动到分开的机器,它将如何工作? 任何最佳实践?

文件权限和所有权Elastic Beanstalk多容器Docker环境aws

有没有什么办法可以在Elastic Beanstalk多容器Docker环境中的Docker容器上部署文件的文件权限和所有权。 有两个自定义容器nginx和php-fpm。 Php-fpm进程作为www-data(用户和组)运行,目前在/ var / www / html下部署的所有文件都由root:root拥有。 我正在寻找使用.ebextensions但是这可能只能解决文件的权限,但不知道如何处理所有权,从根改为万维网数据?

Laravel应用程序CI与Docker&Gitlab

我试图优化一个新的laravel应用程序的工作stream程,我想尝试docker和gitlab-ci 但是,我正在打扰我如何正确pipe理。 这是我认为如何pipe理我的应用程序。 主版本上的每个提交都会运行一个dind gitlab runner。 将运行docker-compose-test.yml进行检查回归 如果testing成功,将build立一个新的形象,并推入私人registry 运行一个脚本获取生产服务器中的应用程序的新形象(通过SSH,但它是相同的服务器) 但是这是骗局: app1的DockerFile是一个纯粹的应用程序代码容器,坏主意。 但是,如果我想运行app1十次我将有10 ngxin服务(1 /容器)? 你是怎么做到的?

如何在Docker容器中通过WordPress发邮件?

我有一个WordPress的形象小问题,将感谢任何帮助。 我有现有的数据库,我与转储导入。 我的Mysql Dockerfile列表如下: FROM mariadb:10.1.20 COPY dump/dump.sql /docker-entrypoint-initdb.d ENV MYSQL_ROOT_PASSWORD pass CMD ["mysqld"] 这是Wordpress Dockerfile,在这里我从src目录导入我的wp-content文件夹: FROM wordpress:latest COPY ./src /var/www/html ENV WORDPRESS_DB_PASSWORD pass ENV WORDPRESS_DB_NAME db ENV WORDPRESS_DB_HOST mysql:3306 当然还有docker-compose.yml文件: version: '2' services: mysql: build: mysql/ restart: always volumes: – db_data:/var/lib/mysql container_name: mysql vshvetsov: depends_on: – mysql build: wordpress/ ports: – 8000:80 restart: always […]

Docker php_network_getaddresses错误

我有下面的运行由PHPDocker生成的Docker容器: learn-php-mysql: image: mysql:5.7 container_name: learn-php-mysql volumes: – "./.data/db:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: learning MYSQL_DATABASE: learning MYSQL_USER: learning MYSQL_PASSWORD: learning learn-php-webserver: image: phpdockerio/nginx:latest container_name: learn-php-webserver volumes: – ./code:/code – ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf ports: – "8080:80" links: – learn-php-php-fpm learn-php-php-fpm: build: . dockerfile: php-fpm/Dockerfile container_name: learn-php-php-fpm volumes: – ./code:/code – ./php-fpm/php-ini-overrides.ini:/etc/php/7.1/fpm/conf.d/99-overrides.ini links: – learn-php-mysql:mysql 一切工作正常,除了当试图通过PHP代码连接到MySQL服务器: $mysqli = new […]