如何使用docker-compose将PHP容器与nginx容器连接?

时间:2017-06-20 21:56:04

标签: php nginx docker docker-compose

我正在尝试在Docker环境中创建一个简单的LAMP堆栈。它通过运行第三方容器phpdockerio/php71-fpm:latest来工作,但我想要一个安装了XDebug的自定义PHP容器。

我的问题是,如果我执行docker-compose up,PHP容器会在启动之后退出,然后我的webserver容器才能使用它。如何成功告诉PHP容器等待我的nginx容器的连接?

命令行输出

PS C:\playground> docker-compose.exe up
Starting playground_php_1
Starting playground_web_1
Attaching to playground_php_1, playground_web_1
playground_php_1 exited with code 0
playground_web_1 exited with code 1

Dockerfile

FROM php:latest

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

ENTRYPOINT ["docker-php-entrypoint"]

CMD ["php", "-a"]

搬运工-compose.yml

version: '2'
services:
  php:
    build:
      context: ./etc/php/
      dockerfile: Dockerfile
    volumes:
      - './src:/usr/share/nginx/html'

  web:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - './etc/nginx:/etc/nginx/conf.d'
      - './src:/usr/share/nginx/html'
    depends_on:
      - php

nginx配置

...
    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
...

1 个答案:

答案 0 :(得分:0)

我用自定义容器再次运行它。我将基本图片从php更改为php-fpm

接下来我做的是,我必须清除正在运行的容器并在我的机器上删除已创建的图像。否则docker-compose将再次使用错误/旧容器。