2016-07-22 359 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