手记docker-compose搭建php遇到的坑
1.使用docker搭建单独的php容器 需要在nginx的配置文件里指定容器的ip
例如:
location ~ \.php(.*)$ {
fastcgi_pass 172.18.0.1:9000; //指定容器的ip
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
如果nginx也是容器那么就需要使用links参数进行指定
2.php搭建完毕之后需要安装拓展
可以使用 docker exec -it myContainerName /bin/bash 进入到容器内部使用docker-php-ext-install pdo pdo_mysql
安装常用到的pdo和mysql拓展,更多拓展可以参考hub.docker.com
3.如果使用的mysql是外部的,比如host配置的是127.0.0.1则需要改为 服务器的真实ip
否则会报错
SQLSTATE[HY000] [2002] Connection refused
4.docker搭建php
需要先docker search [imagesName]
再pull自己想要的镜像 docker pull [imagesName]
再编写自己的docker-compose.yml文件,如下
version: "2"
services:
php:
image: php:7.2.3-fpm
networks:
- lnmp
volumes:
- /root/docker/web:/web
environment:
- TZ=Asia/Shanghai
nginx:
image: nginx:1.15
networks:
- lnmp
ports:
- 8080:80
volumes:
- /root/docker/web:/web
- /root/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
- /root/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
environment:
- TZ=Asia/Shanghai
links:
- php
networks:
lnmp:
images是指上面下载到所对应的镜像文件,如果是Dockerfile自己构造的镜像则需要使用build
images:php:7.2.3-fpm 。 7.2.3-fpm是指标签,
执行:docker-compose up -d 则开始运行容器