Tag: PHP

Docker容器在本地连接到MySQL数据库 – >redirect到另一个容器

我是Docker的新手。 我已经读过,最好每个容器保持一个应用程序。 我需要运行Web应用程序(LAMP堆栈)。 所以我find了运行PHP + Apache的容器。 现在我需要build立一个MySQL容器。 但是我不确定什么是正确的做法。 我读了可以将多个容器连接在一起。 当它尝试连接到本地mysql数据库时,它的想法是让它运行PHP + Apache的容器。 但将所有本地连接redirect到另一个容器。 我的另一个想法是提供环境variables与主机在哪里应该所有的连接去。 在这种情况下,我需要有公共可访问的MySQL服务器,但我需要保持私有和只能在本地访问。 你可以请build议一个更好的select在我的情况下select? 谢谢

Docker组成Nginx / PHP-FPM / Composer

我正在尝试依靠LEMP堆栈为我的应用程序设置Docker。 为此,我计划使用Docker组合来为Nginx生成一个容器,一个用于PHP-FPM,一个用于MySQL。 对于在线教程中的基本插图用例,这一切都运行良好,但是当我尝试将其应用到我的用例中时,我遇到了一个devise问题。 为了给出一些上下文,我的Web应用程序依赖于Composer for PHP依赖性和Gulp + Bower for CSS / JS依赖性(以及LESS编译,资产最小化等)。 问题是我需要构build应用程序(即安装所有依赖项并运行一些吞吐任务),并将此构build的结果提供给Nginx和PHP-FPM容器。 这是我到目前为止: 泊坞窗,compose.yml: version: "3" networks: database: server: volumes: mysql-data: source: services: php: build: . volumes: – source:/app:ro restart: always networks: – database – server depends_on: – mysql mysql: image: mysql:5.7 volumes: – mysql-data:/var/lib/mysql restart: always networks: – database environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_USER: […]

导入的文件不会出现在Docker容器中

我昨天第一次碰到Docker,对于一般的Web服务器pipe理我不太了解。 只是一个头。 我努力在Docker容器中运行一个简单的PHP“hello world”。 我已经用下面的dockerfile构build了一个Docker容器: FROM nanoserver/iis MAINTAINER nanoserver.es@gmail.com ADD http://windows.php.net/downloads/releases/php-5.6.31-Win32-VC11-x64.zip php.zip ADD https://nanoserver.es/nanofiles/vcruntime140.dll C:\\Windows\\System32\\vcruntime140.dll ADD https://nanoserver.es/nanofiles/iisfcgi.dll C:\\Windows\\System32\\inetsrv\\iisfcgi.dll ADD https://nanoserver.es/nanofiles/info.dll C:\\inetpub\\wwwroot\\info.php COPY hello.php C:\\inetpub\\wwwroot\\hello.php ENV PHP C:\\php RUN powershell -command Expand-Archive -Path c:\php.zip -DestinationPath C:\php RUN setx PATH /M %PATH%;C:\php ADD https://nanoserver.es/nanofiles/php.ini C:\\php\\php.ini RUN powershell -command \ rm C:\Windows\System32\inetsrv\config\Applicationhost.config ; \ Invoke-WebRequest -uri https://nanoserver.es/nanofiles/Applicationhost.txt -outfile […]

未安装Docker PDO驱动程序上的PHP 7.1 – 已validation它在映像上

我总是得到一个PDO driver not found的错误。 我试过重新启动,直接安装PDO扩展。 请注意,这个docker安装程序昨晚在我的Linux上运行。 唯一不同的是,我从头开始做了比较,在我的Windows上我已经有图像。 最初得到错误后,我试图删除图像,基地的PHP图像由于某种原因未能删除。 然后我跑了: docker exec -it php sh docker-php-ext-install pdo pdo_mysql 运行该命令说明已经安装了扩展。 但我仍然收到错误。 我也注意到这是与模块一起出现的: /var/www/html # ls /usr/local/etc/php/conf.d/ docker-php-ext-pdo_mysql.ini /var/www/html # cat /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini extension=pdo_mysql.so DockerFile PHP FROM php:7.1-fpm-alpine RUN apk update \ && docker-php-ext-install pdo pdo_mysql \ && chown -R www-data:www-data /var/www/html \ && sed -ri 's/^www-data:x:82:82:/www-data:x:1000:50:/' /etc/passwd Docker容器上的PHP模块 […]

我应该在两个容器中复制index.php吗?

我正在build立一个小型的Web项目,用于研究两个docker集装箱(一个nginx容器和一个php容器)。 我已经链接了我的容器,现在我可以直接从nginx容器请求这两个静态文件(.js,.css …),并通过套接字向php容器请求/index.php 。 但到目前为止,我无法处理/请求。 我依靠这个例子来build立我的nginxconfiguration。 下面的代码示例和解释引起了我的注意: location / { index index.html index.php; } […] location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [请求“/”]仅由前缀位置“/”匹配,因此由该位置处理。 然后索引指令testing[index.php]的存在。 如果该指令存在,那么该指令将内部redirect到“/index.php”,并且nginx再次search位置,就好像该请求是由客户端发送的一样。 由于我使用的是Docker容器,所以nginx进程和php工作在两个不同的文件系统中。 所以index.php文件在php容器中,而不是在nginx 。 因此nginx不会find这个文件并返回一个404错误。 这是否意味着我应该 – 即使听起来很脏 – 在两个容器中复制两次php源代码? 还是有更好的方法来解决这个问题? 将301返回到/index.php是正确的方式?

docker-compose – 运行两个服务来执行一个PHP脚本

我刚刚开始使用Docker,而且我对目前的结果非常满意。 我只是目前为了开发的目的而尝试。 我正在使用docker-compose ,这是我docker-compose.yaml : version: '2' services: nginx: image: nginx:alpine ports: – "8070:80" volumes: – ./:/app – ./docker-nginx-default.conf:/etc/nginx/conf.d/default.conf php7: container_name: php7 image: adrian1210/php volumes: – ./:/app:delegated environment: XDEBUG_CONFIG: "remote_host=192.168.5.14" composer: entrypoint: /bin/true image: composer volumes: – ./:/app command: install –ignore-platform-reqs –no-scripts mongodb: image: mongo environment: – MONGO_DATA_DIR=/data/db – MONGO_LOG_DIR=/dev/null volumes: – ./data/db:/data/db ports: – […]

无法使用在Docker中运行的PhpStorm来debuggingPHP应用程序?

我的PHP应用程序在docker中运行。 我的IDE是PhpStorm。 我这样configuration: 我的Dockerconfiguration包含: RUN yes | pecl install xdebug \ && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini 和docker-compose.yml包含像: environment: -XDEBUG_CONFIG: "remote_host=192.168.0.111 idekey=phpstorm" -PHP_XDEBUG_ENABLED: 1 # Set 1 to enable. 我运行我的docker工作 docker-compose up. 当我访问一个页面时,不会触及我的断点。 我在这里想念什么? 在PhpStorm中debugging设置:

Docker for nginx和php-fpm

我正在开始使用Docker和docker-compose 我的第一步是build立一个2个容器的堆栈:1个用于nginx,1个用于php-fpm 有了这个configuration,它的工作 version: '3.3' services: web: image: nginx ports: – "9090:80" volumes: – ./conf/default.conf:/etc/nginx/conf.d/default.conf:ro – ./content:/usr/share/nginx/html:ro links: – php php: image: php:7.1.8-fpm volumes: – ./content:/usr/share/nginx/html:ro 在/content我有一个index.html和phpinfo.php 我可以在浏览器中find这两个页面。 但是我不明白为什么我必须把所有的页面放在两个容器中? 如果我不把php service的音量,index.html显示,但不是phpinfo.php(找不到文件)。 如果我没有把web service的音量,nginx index.html显示,但不是phpinfo.php(404错误)。 所以现在如果我想部署一个WordPress的网站,我将不得不复制两个容器中的所有文件?

无法访问另一个泊坞窗容器中的本地进程

我试图从PHP连接到一个RabbitMQdocker容器。 我得到的错误是Uncaught exception 'ErrorException' with message 'stream_socket_client(): php_network_getaddresses: getaddrinfo failed: Name or service not known' 。 我认为这是我如何将程序指向RabbitMQ进程的问题。 我认为导致错误的代码片段是 $connection = new AMQPStreamConnection(getenv('MESSAGE_BROKER_HOST'), 5672, 'guest', 'guest'); 我正在访问的环境variables在.env中定义为 MESSAGE_BROKER_HOST=amqp://rabbitmq 我不是很习惯docker,但是我觉得这个应该是可行的,因为这个代码运行的过程已经把docker-compose文件中的RabbitMQ链接成了“rabbitmq”。

Docker-compose中的可变图像

我想给一个Docker-compose文件中的drupal'image'标签赋值。 泊坞窗,compose.yml version: '3' services: drupal: image: jonasvbogaert/digipolis-migration:latest container_name: drupalenv ports: – 8080:80 volumes: – ../drupal_site_eloket-brandweerzonecentrum/:/var/www/html/ restart: always environment: DRUPAL_SITE_NAME: Drupal DRUPAL_USER: admin DRUPAL_PASS: admin mariadb: image: mariadb:latest container_name: mariadbenv restart: always ports: – 3036:3036 depends_on: – drupal environment: MYSQL_ROOT_PASSWORD: "" MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' MYSQL_USER: drupal MYSQL_PASSWORD: drupal MYSQL_DATABASE: drupal 在shell脚本的帮助下,我想问用户他们要使用的Drupal版本。 基于他们的答案(7或8),我希望图像值在2个图像之间切换。