Docker部署lnmp

安装docker

  • 安装

    1
    2
    3
    4
    5
    6
    7
    8
    1.下载yum源
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    2.修改baseurl地址
    底行模式下:%s/https:\/\/download.docker.com\//https:\/\/mirrors.tuna.tsinghua.edu.cn\/docker-ce\//g
    3.查看程序包
    yum repolist
    4.安装
    yum install -y docker-ce
  • 配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    配置文件:/etc/docker/daemon.json ,docker启动之前不存在可自行定义创建,启动之前就自动生成。
    {
    "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    # 阿里云镜像
    {
    "registry-mirrors": ["https://6ucotgoh.mirror.aliyuncs.com"]
    }
    # systemctl daemon-reload
    # systemcctl start docker

下载需要的镜像

1
2
3
docker pull nginx:alpine
docker pull php:5.6-fpm
docker pull mysql:5.7

相关部署

  • 启动php

    1
    2
    3
    4
    docker run --name  myphp -v /data/nginx/www:/www  -d php:5.6-fpm
    # --name myphp :将容器命名为 myphp
    # -v /data/nginx/www:/www :将主机中项目的目录/data/nginx/www 挂载到容器的/www
    # -d :后台运行
  • 添加nginx配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    # 创建 /data/nginx/conf/conf.d 目录:
    mkdir -p /data/nginx/conf/conf.d

    在/data/nginx/conf/conf.d/test-php.conf 文件,内容如下:
    server {
    listen 80;
    server_name localhost;

    location / {
    root /usr/share/nginx/html;
    index index.html index.htm index.php;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }

    location ~ \.php$ {
    fastcgi_pass 172.17.0.4:9000;
    # 这里为php容器的ip
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
    include fastcgi_params;
    }
    }

    # fastcgi_pass :填写php器的ip,使用docker inspect myphp -f `{{.NetworkSettings.IPAddress}}`查看IP
  • 启动nginx

    1
    docker run --name mynginx -p 80:80 -d -v /data/nginx/www:/usr/share/nginx/html:ro -v /data/nginx/conf/conf.d:/etc/nginx/conf.d:ro --link myphp5.6:php nginx:alpine
  • 测试php

    1
    2
    3
    4
    5
    # 在/data/nginx/www目录下创建test-php.php,代码如下:
    <?php
    echo phpinfo();
    ?>
    # 浏览器访问测试:IP/test-php.php
  • 启动mysql

    1
    docker run --name myMysql -P -e MYSQL_ROOT_PASSWORD=Xxzx@789 -d mysql
  • 测试php连接mysql

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    $dbms='mysql'; //数据库类型
    $host='172.17.0.2'; //数据库主机名,此处写mysql 容器的名字
    $dbport = '3306';
    $dbName='emlog'; //使用的数据库
    $user='root'; //数据库连接用户名
    $pass='X****'; //对应的密码
    $dsn="$dbms:host=$host;port=$dbport;dbname=$dbName";
    try {
    $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
    echo "successful!<br/>";
    //你还可以进行一次搜索操作
    // foreach ($dbh->query('SELECT * from user') as $row) {
    // print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
    // }
    $dbh = null;
    } catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
    }
  • docker容器安装vim等命令

    1
    2
    3
    4
    5
    6
    7
    # 进入容器
    docker exec -it 容器名 /bin/bash(或者/bin/sh)
    # 查看容器的系统版本
    cat /etc/issue
    # 此处以ubuntu为例,先更新软件包,否则安装可能会提示Unable to locate package vim
    apt-get update
    apt-get install vim
  • php连接mysql报错:could not find driver

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 默认官方php是没添加支持mysql,需自行安装配置
    1、进入php容器
    docker exec -it myphp /bin/bash
    2、进入安装扩展目录下
    whereis php # 查看在/usr/local/bin下
    # 安装扩展 :docker-php-ext-install
    ./docker-php-ext-install pdo pdo_mysql
    ./docker-php-ext-install mysqli
    3、查看php.ini
    php --ini
  • 安装gd扩展:验证码要用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    1、进入php容器
    docker exec -it myphp /bin/bash
    2、安装依赖
    apt-get install libpng-dev
    3、进入安装扩展目录
    ./docker-php-ext-install -j$(nproc) gd
    4、重启php容器,测试gd
    <?
    if(extension_loaded('gd')) {
    echo '您可以使用gd<br>';
    foreach(gd_info() as $cate=>$value)
    echo "$cate: $value<br>";
    } else
    echo '没安装gd扩展!'
    ?>
-------------本文结束感谢您的阅读-------------
原创技术分享,感谢您的支持。