2016-07-22 15 views
2

Ich benutze Docker, um meine dev-Umgebung, eine sehr einfache env, wo alles, was ich habe, ist nginx und php-fpm.Docker php eingerichtet Installation von PDO-Erweiterung

folgende So Docker Docks ich eine Docker-compose.yml erstellt haben:

web: 
image: nginx:latest 
ports: 
    - "80:80" 
volumes: 
    - ./code:/code 
    - ./site.conf:/etc/nginx/conf.d/site.conf 
links: 
    - php 

php: Bild: php: 7-fpm Bände: - ./code:/code

Also was passiert hier, ich nginx Bild und pgp-fpm Bild und verlinke sie.

ich habe auch eine site.conf Datei:

server { 
    index index.php; 
    server_name php-docker.local; 
    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 
    root /code; 

    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass php:9000; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param PATH_INFO $fastcgi_path_info; 
    } 
} 

So, hier ist die ganze Server Zeug.

mit dieser Einrichtung habe ich phpinfo() erfolgreich ausgeführt. Wenn ich jedoch meinen App-Code eingegeben habe, bekomme ich einen Fehler, der sich über Erweiterungen von pdo pdo_mysql beklagt. Also habe ich mehr recherchiert und herausgefunden, dass ich eine Dockerfile brauche.

Ich habe eine Docker-Datei und und im Inneren dieser Befehle hinzugefügt:

FROM php:7 
RUN docker-php-ext-install pdo pdo_mysql 

Natürlich funktioniert das nicht, ich meine, wenn dies die Erweiterungen nicht installieren und wie funktioniert mein php-fpm supoose diese zu sehen Erweiterungen ...?

+0

Haben Sie in der Dokumentation auf der PHP-Repository in Dockerhub sehen: https: // Hub .docker.com/_/php /? Ich habe das mit der Apache-Version gemacht, nicht fpm. Mit der Apache-Version erstellen Sie eine Docker-Datei und installieren alle Vorab-Requests und 'RUN docker-php-ext-install pdo_mysql'. Ich nehme an, es gibt eine ähnliche Methode für FPM, siehe readme und das entsprechende Github Repo. – ldg

+0

Haben Sie 'docker-compose build' ausgeführt, bevor Sie' docker-compose-up'd' ausführen? –

Antwort

0

Dieses Dockerfile mir helfen:

FROM php:fpm 
RUN apt-get update \ 
    && apt-get install -y --no-install-recommends libpq-dev \ 
    && docker-php-ext-install mysqli pdo_pgsql pdo_mysql 

Und das ist Teil meiner Docker-composer.yml

phpfpm: 
    build: 
     context: ./php-fpm 
     dockerfile: Dockerfile 
    container_name: test-php-fpm 
    links: 
     - mysql 
    volumes: 
     - ./html:/usr/share/nginx/html