• Docker配置LNMP环境


    目录规划

    • 根目录下新建www目录,集中存放相关的配置文件和web文件

    Mysql

    • 从dockerhub拉取mysql镜像
      $ docker pull mysql
    • 实例化镜像,启动一个mysql容器
      $ docker run -p 3306:3306 --name mysql -v /www/mysql/conf:/etc/mysql/conf.d -v /www/mysql/logs:/logs -v /www/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true mysql
      -p 端口映射(主机:容器)
      -v 目录挂载(主机:容器)
      -e MYSQL_ROOT_PASSWORD=123456:初始化mysql root 用户密码
      --privileged 使容器内root拥有真正的的root权限

    PHP-FPM

    • 从dockerhub拉取PHP-FPM镜像
      $ docker pull php:fpm
      $ docker run --name php-fpm -p 9000:9000 --link mysql:mysql -v /www/html:/var/www/html -v /www/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /www/php/php.ini:/usr/local/etc/php/php.ini -d php:fpm
      找到容器中php.ini-production的位置
    $ docker exec -it php-fpm bash
    $ cd /usr/src/
    $ xz -d php.tar.xz  
    $ tar -xvf  php.tar
    

    复制到本地
    $ docker cp php-fpm:/usr/src/php-7.3.10/php.ini-production php.ini

    Nginx

    • 从dockerhub拉取nginx镜像并实例化
      $ docker pull nginx
      $ docker run --name nginx -p 80:80 --link php-fpm -v /www/html:/usr/share/nginx/html -v /www/nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx

    此时web服务已可以正常运行,并可解析php文件。如果要安装ThinkPHP或phpcms等,还要安装相关的php扩展,因此需要对官方镜像进行重新编译,下面是用到的Dockerfile,这个文件放在/www目录下

    # PHP-FPM支持ThinkPHP、phpcms
    # v1.0
    
    # Base images
    FROM php:7.3.10-fpm
    
    MAINTAINER moore "lee_moore@foxmail.com"
    
    # 设置时区
    ENV TZ=Asia/Shanghai
    RUN echo $TZ > /etc/timezone
    
    # 将主机配置文件上传至镜像中
    ADD php/www.conf   /usr/local/etc/php-fpm.d/www.conf
    ADD php/php.ini    /usr/src/php/php.ini
    
    # 更换中科大源(非必须)
    RUN echo "deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
    deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free" > /etc/apt/sources.list
    # 安装相关扩展
    RUN apt update && apt install -y 
            libfreetype6-dev 
            libjpeg62-turbo-dev 
            libpng-dev 
        && docker-php-ext-install -j$(nproc) iconv 
        && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ 
        && docker-php-ext-install -j$(nproc) gd 
        && docker-php-ext-install pdo_mysql 
        && docker-php-ext-install mysqli
    
    #开放9000端口
    EXPOSE 9000
    

    删除原来的php-fpm容器,已新编译的php-fpm镜像新启动一个容器

    $ cd /www
    $ docker build -t php-fpm:v1 ./
    $ docker run --name php-fpm -p 9000:9000 --link mysql:mysql -v /www/html:/var/www/html -v /www/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /www/php/php.ini:/usr/local/etc/php/php.ini -d php:fpm:v1
    

    此时LNMP环境部署完毕

  • 相关阅读:
    Forest Program(dfs方法---树上的环)
    RMQ+差分处理(Let Them Slide)Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
    线段树维护最后一个0的位置(Restore Permutation)Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
    n*n矩阵 每行每列XOR为0(思维)
    区间DP(入门)括号匹配
    Dijkstra(模板)
    线段树--扫描线(模板)自下而上
    后缀数组 LCP--模板题
    状压DP--Rotate Columns (hard version)-- Codeforces Round #584
    01背包方案数(变种题)Stone game--The Preliminary Contest for ICPC Asia Shanghai 2019
  • 原文地址:https://www.cnblogs.com/captainmoore/p/11670642.html
Copyright © 2020-2023  润新知