我正在尝试在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;
}
...
答案 0 :(得分:0)
我用自定义容器再次运行它。我将基本图片从php
更改为php-fpm
。
接下来我做的是,我必须清除正在运行的容器并在我的机器上删除已创建的图像。否则docker-compose
将再次使用错误/旧容器。