zoukankan      html  css  js  c++  java
  • Docker搭建开发环境(Nginx+MySQL+PHP)

    注意事项

    1、像MySQL配置文件、Nginx配置文件、网站根目录这种比较经常操作的需要先使用 docker cp 将文件从容器里复制到主机目录,docker run的时候直接挂载目录就可以了

    2、docker run MySQL和Nginx的时候注意使用 --link实现容器之间通信

    3、运行容器的时候注意使用 --ip 固定容器IP

    安装 MySQL

    mysql 需要挂载的目录

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

    挂载详情

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

    文件备份

    将mysql的配置文件,自带数据库,sock配置 复制到主机目录

    # docker cp container_ID:容器目录 主机目录
    docker cp 2d19ae0acd5d:/var/lib/mysql ~/web/mysql/data
    docker cp 2d19ae0acd5d:/etc/mysql/conf.d  ~/web/mysql/conf
    

    目录分解

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

    命令实现

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

    安装PHP

    需要挂载的目录

    /var/www/html 
    

    挂载详情

    # 主机目录:容器目录
    ~/web/www/:/var/www/html 
    

    文件备份

    # docker cp container_ID:容器目录 主机目录
    docker cp 7da668050b8a:/var/www/html /docker-data/web/www
    

    目录分解

    docker run 
    --name php 
    -p 9000:9000 
    --privileged=true 
    -v ~/web/www/:/wwwroot 
    --link mysql:mysql # 使用link实现两个容器之间的通信
    --restart=always 
    -d
    php:7.2-fpm
    

    命令实现

    docker run --name php -p 9000:9000 --privileged=true -v ~/web/www/:/wwwroot --link mysql:mysql --restart=always -d php:7.2-fpm
    

    扩展安装

    # 进入容器执行命令安装扩展
    docker-php-ext-install [扩展名称]
    
    # 安装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]#重启容器
    

    安装Nginx

    需要挂载的目录

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

    挂载详情

    # 主机目录:容器目录
    ~/web/www:/usr/share/nginx/html 
    ~/web/nginx/conf.d:/etc/nginx/conf.d 
    

    文件备份

    # docker cp container_ID:容器目录 主机目录
    docker cp e0babc8a32ad:/usr/share/nginx/html ~/web/www
    docker cp e0babc8a32ad:/etc/nginx/conf.d ~/web/nginx/conf.d
    

    目录分解

    docker run 
    --name nginx 
    -p 8080:80  
    --privileged=true 
    -v ~/web/www:/wwwroot
    -v ~/web/nginx/conf.d:/etc/nginx/conf.d 
    --link php:php 
    --restart=always 
    -d 
    nginx
    

    命令实现

    docker run --name nginx -p 8080:80  --privileged=true -v ~/web/www:/wwwroot -v ~/web/nginx/conf.d:/etc/nginx/conf.d --link php:php --restart=always -d nginx
    

    Nginx配置文件参考

    server {
            listen       80;
            server_name  tplay.yulongcode.com;
    
            root   /wwwroot/tplay/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;
    	   }
    }
    
  • 相关阅读:
    vs快速添加引用解析的快捷键
    Linux内核调试技术——kprobe使用与实现
    Linux内核调试技术——kretprobe使用与实现
    Linux内核调试技术——jprobe使用与实现
    【HTTP协议】---HTTP协议详解
    雪崩效应
    Shell中IFS用法
    shell中for循环,读取一整行
    BCD码
    pam模块日志怎么输出
  • 原文地址:https://www.cnblogs.com/ovim/p/12719548.html
Copyright © 2011-2022 走看看