Loading

docker 安装nginx、php

网络环境准备

docker network create --subnet 172.18.0.0/16 my-net

redis 安装

docker run -d --name redis -p 6379:6379 redis --requirepass "123"

nginx安装

docker run --name web-nginx -p 80:80 -v /usr/local/var/www:/usr/share/nginx/html -d nginx

这里,因为设置了本地80端口映射,先确定本地是否80端口被占用则kill掉

lsof -i:80
kill -9 pid

因为是mac环境,需要提前配置路径权限:

php7.2安装

docker run -d --name php-fpm -p 9000:9000 -v /usr/local/var/www:/usr/share/nginx/html php:7.2-fpm

php扩展安装

pdo_mysql扩展

扩展目录,为:/usr/src/php/ext/,因为容器自带pdo_mysql,可以直接安装

docker-php-ext-install pdo pdo_mysql

redis扩展

curl -L -o ~/redis.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.3.0
tar xfz redis.tar.gz
mv phpredis-5.3.0 /usr/src/php/ext/redis (如果没有路径/usr/src/php/ext/,mkdir -p创建)
docker-php-ext-install redis

xdebug扩展

curl -L -o ~/xdebug-3.0.3.tgz https://xdebug.org/files/xdebug-3.0.3.tgz
tar xfz xdebug-3.0.3.tgz
mv xdebug-3.0.3 /usr/src/php/ext/xdebug
docker-php-ext-install xdebug

重启php容器

docker restart php-fpm

查看nginx\php容器是否正确运行

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
0d642340b24a        php:7.2-fpm         "docker-php-entrypoi…"   9 minutes ago       Up 9 minutes        0.0.0.0:9000->9000/tcp   php-fpm
06c88a111a61        nginx               "/docker-entrypoint.…"   4 hours ago         Up 3 hours          0.0.0.0:80->80/tcp       web-nginx

配置nginx,启用php

# 进入容器
docker exec -it php-fpm bash
# 查看配置文件
whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
# vim编辑文件(如果没有则先下载安装vim)
cd /etc/nginx/conf.d
cp default.conf  default.conf.bak
vim default.conf
# 修改内容
    location ~ \.php$ {
      root           html;
      fastcgi_pass   172.18.0.3:9000;      # 也可以通过别名指定php-alias
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
      include        fastcgi_params;
  }
# 172.18.0.3为php容器在bridge网络下的ip,通过命令查看:
docker inspect php-fpm | grep -i 'IPAddress'

# 停止php容器等,指定IP地址
docker network connect --ip 172.18.0.2 --alisa nginx-alias my-net web-nginx
docker network connect --ip 172.18.0.3 --alisa php-alias my-net php-fpm
docker network connect --ip 172.18.0.4 --alisa redis-alias my-net redis

测试是否生效

vim /usr/local/var/www/phpinfo.php
<?php
  echo phpinfo();
?>

浏览器访问:localhost/phpinfo.php , 看到正确信息则说明生效了

其他补充内容

如果创建时未指定 --restart=always ,可通过 update 命令更改

docker update --restart=always 容器ID
posted @ 2021-03-12 10:53  集君  阅读(145)  评论(0编辑  收藏  举报