Ich versuche, einen einfachen LAMP-Stack in einer Docker-Umgebung zu erstellen. Es funktionierte, indem Sie einen Drittanbieter-Container phpdockerio/php71-fpm:latest
ausgeführt, aber ich wollte einen benutzerdefinierten PHP-Container mit XDebug installiert, für den Moment.Wie kann ich einen PHP-Container mit einem Nginx-Container verbinden, indem ich docker-compose verwende?
Mein Problem ist, dass, wenn ich docker-compose up
ausführen, der PHP-Container nach dem Start beenden, bevor mein Webserver Container verwenden kann. Wie kann ich dem PHP-Container mitteilen, dass er auf eine Verbindung meines Nginx-Containers warten soll?
Befehlszeilenausgangs
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"]
Docker-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 Konfiguration
...
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;
}
...
Wenn der containerisierte Prozess beendet wird, gilt der Container als gestoppt. Wenn einer Ihrer Prozesse etwas auf stdout/stderr ausgibt, bevor sie beendet werden, können Sie diese Ausgabe sehen, indem Sie 'docker logs' –
programmerq
@programmerq machen Danke, für den Tipp. _:) _ – Pyth0n