• docker 实现 mysql+nginx+php


    首先创建一个新的 Docker 网络 这里是用来测试   使用名称test

    docker network create -d bridge test

    docker network ls 可查看  docker网络

    拉取mysql镜像  这里 用mysql5.7  :5.7标签 也是指 版本号

    docker pull mysql:5.7
    

      开始之前 把主机目录的 文件夹先建立好 加好相应权限

    mysql 需要挂载的目录

    /var/lib/mysql
    /etc/mysql/conf.d

    挂载详情

    # 主机目录:容器目录
    /etc/docker/mysql/data:/var/lib/mysql 
    /etc/docker/mysql/conf:/etc/mysql/conf.d 

    复制容器相应文件 到本机  事先先创建一个测试容器 进行文件复制

    # docker cp container_ID/容器名称:容器目录 主机目录
    docker cp mysql:
    /var/lib/mysql /etc/docker/mysql/data

    docker cp mysql:/etc/mysql/conf.d /etc/docker/web/mysql/conf

    命令实现

    docker run --name --network test mysql -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --privileged=true -v /etc/docker/mysql/data:/var/lib/mysql -v /etc/docker/mysql/conf:/etc/mysql/conf.d --restart=always -d mysql:5.7

    命令详情

    docker run 
    --name mysql # 指定容器名称
    --network test #添加到test网络
    -e MYSQL_ROOT_PASSWORD=root  # 初始化root用户的密码为root
    -p 3307:3306 # 将容器的3306端口映射到主机的3307端口
    --privileged=true # 给容器加上特定的权限,否则可能会出现常见容器失败的情况
    -v /etc/docker/mysql/data:/var/lib/mysql # 挂载目录 mysql数据文件
    -v /etc/docker/mysql/conf:/etc/mysql/conf.d # 挂载目录 mysql配置文件
    --restart=always # 设置失败自动重启   可写为 --restart=on-failure:5  最多重启五次
    -d mysql:5.7

    拉取php 镜像 默认最新版本

    docker pull php

    需要挂载的目录

    /var/www/html 

    与mysql类似  在本地创建相应容器挂载目录 进行权限修改 文件复制等等

    命令实现:

    docker run --name --network test php -p 9000:9000 --privileged=true -v /etc/docker/php/web/www/:/wwwroot  --restart=always -id php

    命令详情 与 mysql 一样

    扩展安装 

    docker exec -it [container id]/container name bash #进入容器

    # 进入容器执行命令安装扩展 docker
    -php-ext-install [扩展名称]
    # 我放置了tplay框架 安装 pdo_mysql 未安装之前报错 could not find driver # 安装GD库 apt update #更新软件源 apt install
    -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev #安装各种库 docker-php-source extract #解压源码 cd /usr/src/php/ext/gd #gd源码文件夹 docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2 #准备编译 docker-php-ext-install gd #编译安装 php -m | grep gd docker restart [container ID]/容器name #重启容器


    上述gd扩展如出现 MySQL安装不上pdo_mysql 用如下命令
    docker-php-ext-install -j$(nproc) bcmath calendar exif gettext 
    sockets dba mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm
     

    安装nginx

    需要挂载的容器目录

    /usr/share/nginx/html 
    /etc/nginx/conf.d 

    同上  复制   容器文件 到本机

    docker run --name nginx --network test -p 8080:80  --privileged=true -v /etc/docker/nginx/web/www:/wwwroot -v /etc/docker/nginx/conf.d:/etc/nginx/conf.d  --restart=always -id nginx

    Nginx配置文件参考

    server {
            listen       80;
            server_name  www.buxin.com;
     
            root   /wwwroot/docker/public; # 项目在容器里的目录
            index index.php index.html index.htm;
     
            location / {
                if (!-e $request_filename){
                       rewrite  ^(.*)$  /index.php?s=$1  last;   break;
                }
            }
     
            error_page   500 502 503 504  /50x.html;
         
            location ~ .php$ {
                fastcgi_pass   PHP容器IP:PHP端口;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
                include        fastcgi_params;
           }
    }

    本机hosts 文件添加 127.0.0.1 www.buxin.com

     docker查看镜像元信息  可以查到php容器 ip

    docker inspect [container id]/[container name] 

    example     : "IPAddress": "172.18.0.4",

    选自:     https://www.cnblogs.com/yulongcode/p/12719548.html

  • 相关阅读:
    cocos2d-x 团队碰面有感
    2014年3月份 月会
    2014年特种兵训练营感想
    web 的简单框架
    【实用小技巧】virtual box 虚拟机复制
    flash的Socket通讯沙箱和安全策略问题
    Codeforces Round #237 (Div. 2)
    类的静态常量数组初始化
    关于自己的成长计划
    Android
  • 原文地址:https://www.cnblogs.com/buxin111/p/13045925.html
Copyright © 2020-2023  润新知