docker搭建lnmp+redis环境(基础篇)

//搜索公有库的nginx
docker search nginx
//找到合适的下载

docker pull nginx

//安装mysql:5.6

docker pull mysql:5.6

//安装redis:3.2

docker pull  redis:3.2

安装php-fpm

docker pull php:7.1.7-fpm-alpine

nginx -t //查看配置文件路径
/etc/nginx/nginx.conf //nginx配置文件路径
netstat -tanlp//查看端口
kill pid//杀死进程 pid进程id

//注意运行顺序 因为服务是隔离开的单独的镜像,要使用–link关联下
//link是通过在容器启动时修改/etc/hosts文件来实现的
//运行mysql

docker run -p 3306:3306 --name mymysql -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6

//运行 redis 容器

docker run --name redis -p 6379:6379 -v /data/redis/conf/:/etc/redis/redis.conf -d redis:3.2

//运行php

docker run -p 9000:9000 --name  php7.17-fpm -v /var/www:/var/www/html -v /var/php7.1:/usr/local/etc/php  --link mymysql:mymysql --link redis:redis  --privileged=true -d php:7.1.7-fpm-alpine

//运行nginx容器 -v 前面是宿主主机的目录 : 容器的目录

docker run -p 80:80 --name nginx  --privileged=true -v /var/nginx:/usr/share/nginx/html  -v  /var/nginx/log:/var/log/nginx  -d nginx:latest

//进入php容器安装扩展

docker exec -ti php7.17-fpm  /bin/sh
或者
docker exec -ti php7.17-fpm  /bin/bash
//安装
docker-php-ext-install pdo pdo_mysql
docker-php-ext-install redis

配置下主机的 nginx.conf

server {
        listen       80;
        server_name  localhost;
        root    "~/var/www";
        location / {
            index  index.html index.htm index.php l.php;
           autoindex  on;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php(.*)$  {
            fastcgi_pass   127.0.0.1:9000;
            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;
        }

    }

总结:
1、对于php-fpm容器来说,php-fpm的www.conf配置文件里,监听的IP导致不能是127.0.0.1,必须是0.0.0.0;否则会导致后续nginx这边出现404(查看问题)。

Copy
;listen = 127.0.0.1:9000
listen = 0.0.0.0:9000
2、nginx容器必须使用–link连接到php-fpm容器。
3、nginx容器和php-fpm容器的www目录必须是一致的。
4、nginx容器配置fastcgi_pass的时候需要修改为–link里的名称(实际为主机名称,会在nginx容器的/etc/hosts新增一条主机记录)。
5、如果nginx容器需要支持更多端口访问,那么使用-p范围表示,示例:-p 80-90:80-90。或者多个-p参数。
6、-v参数指定的本地挂载目录(示例里的/work)子目录(例如/www)在宿主机不能是软链接,否则会导致nginx 404,因为软链接在容器里是无效的。但是/work本身可以是软链接。

你可能感兴趣的:(docker,lnmp,redis)