2016-07-22 357 views
2

我正在使用docker構建我的開發環境,這是一個非常簡單的env,我所有的都是nginx和php-fpm。Docker php設置安裝pdo擴展

所以以下碼頭工人碼頭我創建了一個碼頭工人,compose.yml:

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

PHP: 圖像:PHP:7-FPM 卷: - ./code:/code

那麼在這裏發生了什麼,我調用nginx圖像和pgp-fpm圖像並鏈接它們。

我還創建了一個site.conf文件:

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; 
    } 
} 

因此,這裏是所有的服務器上的東西。

與此設置我已經成功運行phpinfo()。當我但是我的應用程序代碼,我得到一個錯誤抱怨pdo pdo_mysql擴展。所以我做了更多的研究,發現我需要一個Dockerfile。

我創建了一個碼頭工人的文件,並和裏面添加了這個命令:

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

當然,這是不行的,我的意思是哪裏此安裝擴展以及如何做我的PHP-FPM supoose看到這些擴展...?

+0

你有沒有看在Dockerhub的PHP庫中的文檔:https://開頭樞紐.docker.com/_/php /?我已經用apache版本完成了,而不是fpm。使用apache版本,您可以創建一個Dockerfile並安裝任何前置請求和'RUN docker-php-ext-install pdo_mysql'。我假設有一個類似的FPM方法,請參閱自述文件和相應的github回購。 – ldg

+0

運行'docker-compose up -d'之前,你運行過'docker-compose build'嗎? –

回答

0

這Dockerfile幫我:

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 

而這部分我的搬運工,composer.yml

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