2017-06-20 2 views
0

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; 
    } 
... 
+0

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

+0

@programmerq machen Danke, für den Tipp. _:) _ – Pyth0n

Antwort

0

Ich habe es läuft, wieder mit meinem Custom Container. Ich habe das Basisbild von php zu php-fpm geändert.

Das nächste was ich tat, war, dass ich laufende Container löschen und bereits erstellte Bilder auf meinem Rechner löschen musste. Andernfalls würde docker-compose den falschen/alten Container erneut verwenden.

Verwandte Themen