注:
-v语句冒号后是容器内的路径 我将nginx的网页项目目录 配置目录 日志目录分别挂载到了我事先准备好的/server目录下
–link myphp:myphp 将nginx容器和php容器连接 通过别名myphp就不再需要去指定myphp容器的ip了
docker ps -a 查看所有容器运行成功 这里环境也就基本搭建完成了挂载目录后就可以不用进入容器中修改配置,直接在对应挂载目录下改配置文件 修改 nginx 配置
到 /server/nginx/conf.d/Default.conf
server {
listen 80:
server_name localhost:
location / {
root /usr/share/nginx/html/blog/public: ##/user/share/nginx/html是工作目录
index index.html index.php index.htm
} error-page 500 502 503 504 /50x.html
localtion = /50x.html {
root /usr/share/nginx/html
}
location ~.php$ {
fastcgi_pass myphp 9000:
## 容器与容器之间建立链接必须指定对方IP 使用命令sudo docker inspect myphp 可以看到最下面IPAddress参数就是该容器的ip
##我们在创建容器时已经通过--link的方式创建容器,我们可以使用被Link容器的笔名惊醒访问,而不是通过IP,解除了对IP的依赖
fastcgi_index index.php
fastcgi-param SCRIPI_FILENAME /var/www/html/blog/public$fastcgi_script_name:
## myphp和mynginx的工作目录不同mynginx是/usr/share/nginx/html
## php是/var/www/html 所以在创建容器时我们已经将两个目录都挂在到宿主机相同的目录上了/server/www但这里不能使用宿主机的公共挂载目录
include fastcgi_params:
}
}
3.PHP 扩展库安装
docker exec -ti myphp /bin/bash 首先进入容器
docker-php-ext-install pdo pdo_mysql 安装 pdo_mysql 扩展
docker-php-ext-install redis
注: 此时报错提示redis.so 因为一些扩展并不包含在 PHP 源码文件中
方法一:
tar zxvf /server/php_lib/redis-4.1.0.tgz 解压已经下载好的 redis 扩展包
docker cp /server/php_lib/redis-4.1.0 myphp:/usr/src/php/ext/redis 将扩展放到容器中 再执行安装
注:
直接将扩展包放到容器ext目录里可能会报错Error: No such container:path: myphp:/usr/src/php/ext
你可以多开一个服务器窗口 进入php容器中执行docker-php-ext-install redis此时报错error: /usr/src/php/ext/redis does not exist
保持这个状态然后在你的第一个服务器窗口执行上条命令就成功了
(具体原因未知但确实要执行一次docker-php-ext-install命令 容器中才会开放/usr/src/php/ext这个目录)
方法二:
注:
官方推荐使用 PECL(PHP 的扩展库仓库,通过 PEAR 打包)。用 pecl install 安装扩展,然后再用官方提供的 docker-php-ext-enable










