我正在使用docker来构建我的开发环境,这是一个非常简单的环境,我只有nginx和php-fpm。
因此,在以下docker docks中,我创建了一个docker-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
所以这里发生的事情,我调用nginx-image和pgp-fpm-image并将它们链接起来。
我还创建了一个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。
我创建了一个docker文件,并在其中添加了以下命令:
FROM php:7
RUN docker-php-ext-install pdo pdo_mysql
当然,这不起作用,我的意思是,这将在哪里安装扩展,我的php-fpm如何查看这些扩展。。。?
这个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
这是我的docker-composer.yml 的一部分
phpfpm:
build:
context: ./php-fpm
dockerfile: Dockerfile
container_name: test-php-fpm
links:
- mysql
volumes:
- ./html:/usr/share/nginx/html