美文网首页
Docker安装Lnmp环境

Docker安装Lnmp环境

作者: Sen_森 | 来源:发表于2020-07-22 13:33 被阅读0次

    1.安装nginx

    #1.查找镜像
    $ docker search nginx
    
    #2拉取官方镜像
    $ docker pull nginx
    
    #3.创建并运行容器,绑定映射端口(该条命令到挂载nginx的目录下运行)
    $ docker run --name nginx -p 80:80  -v  /var/www/html/:/usr/share/nginx/html -v $PWD/conf.d:/etc/nginx/conf.d -v $PWD/log:/var/log/nginx -v $PWD/ssl:/etc/nginx/ssl -d nginx
    
          --name 这里是别名,使用docker ps 会最后显示names
    
          -p  80:80    第一个80是服务器的端口,第二个80是docker容器端口,
    
          -v  项目目录挂载
          -v  配置文件目录挂载(其中有一个default.conf 文件,使用挂载这个文件需要手动创建)
          -v  日志文件挂载
          -v  ssl证书目录挂载
    
          -d 要运行的容器名称 这里是nginx
    
    
    注:所有的挂载操作只为在宿主机上就可以操作容器内部的文件,无需进入容器内部

    防火墙配置docker

       $ firewall-cmd --permanent --zone=trusted --change-interface=docker0
       $ firewall-cmd --reload
    

    2.安装php

    #1.查找镜像
    $ docker search php
    
    #2.拉取官方镜像(根据自己的需要安装版本)
    $ docker pull phpdockerio/php72-fpm
    
    #3.现在需要查看nginx 默认运行的路径  进入挂载nginx的配置目录/mnt/nginx/conf.d   查看默认访问路径
    $ cat /mnt/nginx/conf.d/default.conf
    
    image.png
    #4.创建并运行php容器
    $  docker run -p 9000:9000 --name phpfpm72 -v /var/www/html/:/usr/share/nginx/html/ -d phpdockerio/php72-fpm
    
          --name 这里是别名,使用docker ps 会最后显示names
    
          -p  80:80    第一个9000 是服务器的端口,第二个9000 是docker容器端口,
    
          -v  将宿主机的目录挂载到容器中 :前为宿主机路径 后为容器路径 (该操作方便添加项目,无需进入容器添加)
          
          -d 要运行的容器名称 这里是phpfpm72
    
    #5.进入挂载目录, 宿主机/var/www/html,并创建一个php文件
    
    #6.访问php 文件了,如果直接访问就会是404 
    #6.1 获取到phpfpm 这个容器的ip
    $ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' phpfpm72
    
    19fa6014939e8ee6c95d285f7377f72.png
    #6.2将172.18.0.3,这个ip配置到宿主机/mnt/nginx/conf.d/default.conf 
    $ vim default.conf
    
    f434a68333dcfbd74b3486690d4975f.png
    # 加入以下的代码 可以访问php文件
        location ~ \.php$ {
            root           /usr/share/nginx/html;
            fastcgi_pass   172.17.0.3:9000;
            fastcgi_index  index.php;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
     注:想域名访问容器中的项目,需nginx反向代理到域名/index2.php
    
    #6.3重启nginx,即可访问index2.php
    $ docker restart nginx
    

    3.安装mysql

    #1.查找镜像
    $ docker search mysql
    
    #2.拉去镜像
    $ docker pull mysql:5.7
    
    #3.创建并运行mysql容器
    $ docker run -p 3306:3306 --name mysql57 -v $PWD/etc:/etc/mysql -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
    
    
      -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
    
      -v  $PWD/etc:/etc/mysql:将主机当前目录下的 /etc 挂载到容器的/etc/mysql。
    
         注:宿主机中不存在则自动创建,容器/etc/mysql 下所有文件需要拷贝到 宿主机$PWD/etc/ 
            需先创建$ docker run -p 3306:3306 --name mysql57 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql   
            然后docker cp 容器/etc/mysql/*文件,然后删除容器,最后挂载目录运行容器
    
      -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
    
      -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
    
      -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
    
    

    注意:navicat for mysql连接mysql发现报错

    1.出现2003错误

    - 阿里云后台端口
    - 防火墙端口
    

    2.出现1045错误

    #1.进入mysql容器
    docker exec -it 62349aa31687 /bin/bash
    
    #2.进入mysql
    mysql -uroot -p*****
    
    #3.授权
    mysql> GRANT ALL ON *.* TO 'root'@'%';
    
    #4.刷新权限
    mysql> flush privileges;
    
    #5.更新加密规则
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
    
    #6.更新root用户密码:
    mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    
    #7.刷新权限
    mysql> flush privileges;
    
    #8.更新root密码
    mysql> update user set host = '%' where user = 'root';
    
    #9.刷新权限
    mysql> flush privileges;
    

    相关文章

      网友评论

          本文标题:Docker安装Lnmp环境

          本文链接:https://www.haomeiwen.com/subject/jdizkktx.html