zoukankan      html  css  js  c++  java
  • docker lamp

    可以直接使用官方镜像搭建LAMP环境
    从官方下载PHP+Apache镜像和MySQL两个镜像来组成(如:php:7.2.3-apache-stretch和mysql:5.7.21)
    docker pull php:7.3.3-apache-stretch

    docker pull mysql:5.7.21


    官方下载的PHP+Apache镜像是没有安装PHP插件mysqli
    /usr/local/bin/docker-php-ext-install mysqli

    官方下载的PHP+Apache镜像Apache是没有开启rewrite
    a2enmod rewrite

    可以编写Dockerfile基于官方下载的PHP+Apache镜像执行以上两句命令,生成新的镜像文件方便日后使用

    # dockerfile

    FROM php:7.2.3-apache-stretch
     
    RUN /usr/local/bin/docker-php-ext-install mysqli; 
        a2enmod rewrite;
     
    CMD ["apache2-foreground"]



    启动容器时主要要先启动mysql,需要设置root密码,另外可以设置数据库文件存储在宿主机器上,端口可以不映射,因为其他容器通过link方式使用数据库

    再启动PHP+Apache,需要设置端口映射,指定通过link方式访问数据库,可以指定文件存储在宿主机器上

    docker run -d -v C:/data/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql
    docker run -d -p 80:80 -v C:/data/html:/var/www/html --link mysql:mysql php:7.2.3-apache-stretch
    ---------------------
    作者:benimang
    来源:CSDN
    原文:https://blog.csdn.net/benimang/article/details/80515179
    版权声明:本文为博主原创文章,转载请附上博文链接!

    docker run -d -p 8881:80 --name we7_test --privileged=true --link mysql:mysql -v /var/www/we7_test/web:/var/www/html --restart=always php:7.2-apache

    docker 运行 php:7.2-apache 容器

        docker run -d -p 8881:80 --name we7_test --privileged=true --link mysql:mysql -v /var/www/we7_test/web:/var/www/html --restart=always php:7.2-apache

    进入容器安装缺少的扩展:gd pdo

        docker exec -it we7_test /bin/bash

        apt-get update -y && apt-get install -y libpng-dev

        docker-php-ext-install gd pdo pdo_mysql

    退出容器,重启容器

        exit

        docker restart we7_test

    浏览器访问

        http://localhost:8881

    docker run -d -p 10022:22 -p 8001:80  --name apache_php --link mysql_db:mysql_db -v /var/www/html:/usr/local/apache2/htdocs apache_php:v1

    创建一个文件夹用于挂载数据库文件

    mkdir /mysql_lamp

    然后生成容器

    docker run -d -p 33060:3306 -e mysqld -e MYSQL_ROOT_PASSWORD=test-e MYSQL_USER=test -e MYSQL_PASSWORD=test -e MYSQL_DATABASE=discuz -v /

    mysql_lamp:/var/lib/mysql --name mysql_db mysql

    命令详解:

    1、mysqld,#启动mysql服务,必须
    2、MYSQL_ROOT_PASSWORD,#设置mysql的root密码,必须
    3、MYSQL_USER ,#添加用户,可选
    4、MYSQL_PASSWORD,#为用户设置密码,可选
    5、MYSQL_DATABASE,#设置生成容器时需要新建的数据库,可选
    6、将宿主机的目录“/mysql_data”映射到容器的“/var/lib/mysql”目录,可选。这是因为默认情况下数据库的数据库文件和日志文件都会存放于容器的AUFS文件层,这不仅不使得容器变得越来越臃肿,不便于迁移、备份等管理,而且数据库的性能也会受到影响,因此建议挂载到宿主机的目录到容器内。
    7、mysql:镜像名字

     

    -d: 后台运行容器,并返回容器ID;
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -p:端口映射
    --name:生成容器的名字

    Mysql

    docker pull mysql:5.7
    docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你要设置的mysql密码 --name mysql57 mysql:5.7 //你要设置的mysql密码

    Redis

    docker pull redis
    docker run -d -p 6379:6379 --name redis01 redis

    PHP

    docker pull mysql:7.2
    docker run -d -v D:/docker_conf/www:/var/www/html -p 9000:9000 -p 9501:9501 --link mysql57:mysql --name php72 php:7.2-fpm

    扩展

    docker-php-ext-install pdo_mysql

    docker-php-ext-install mysqli

    php-redis扩展

    1、进入php72容器 docker exec -it php72 bash
    2、curl -L -o /tmp/redis.tar.gz phpredis/phpredis/archive/3.1.3.tar.gz //3.1.3=>版本可换
    3、cd /tmp
    4、tar xfz /tmp/redis.tar.gz //解压
    // ls 查看
    // rm -r /tmp/redis.tar.gz 删除
    5、mkdir -p /usr/src/php/ext //(已存在目录就忽略)
    6、在tmp目录下 mv phpredis-3.1.3 /usr/src/php/ext/redis
    7、在cd /usr/src/php/ext/redis目录下 docker-php-ext-install redis
    8、php -m 查看redis能否安装
    9、外部docker restart php72 //php72是docker的name

    php-swoole扩展(和redis扩展相似)

    1、进入php72容器 docker exec -it php72 bash
    2、curl -L -o /tmp/swoole_ext.tar.gz https://codeload.github.com/swoole/swoole-src/tar.gz/v4.2.11
    //版本可换 swoole/swoole-src/releases
    3、cd /tmp
    4、tar xfz /tmp/swoole_ext.tar.gz //解压(swoole-src-4.2.11)
    // ls 查看
    // rm -r /tmp/swoole_ext.tar.gz 删除
    5、mkdir -p /usr/src/php/ext //(已存在目录就忽略)
    6、在tmp目录下 mv swoole-src-4.2.11 /usr/src/php/ext/swoole
    7、在cd /usr/src/php/ext/swoole目录下 docker-php-ext-install swoole
    8、php -m 查看swoole能否安装
    9、外部docker restart php72 //php72是docker的name
    10、下个easyswoole什么的测试一下
    (假如不能运行,是由于容器端口没暴露的起因,处理:
    docker run -d -v D:/docker_conf/www:/var/www/html -p 9000:9000 -p 9501:9501 --link mysql57:mysql --name php72 php:7.2-fpm
    --启动容器时需要加入端口 -p 9501:9501 //需要哪个端口可以增加

    Nginx

    docker pull nginx:1.14.1
    docker run -d -p 80:80 -v D:/docker_conf/www:/var/www/html --link php72:phpfpm --name nginx114 nginx:1.14.1

    docker exec -it nginx114 /bin/bash
    (
    vim /etc/nginx/conf.d/default.conf //没有就apt-get安装
    配置:

    <code>    location {        root  /var/www/html;        index index.html index.htm index.php;    }        location ~.php$ {        ...        root           /var/www/html        fastcgi_pass   电脑ip:9000;### 最好配个本地的虚拟域名        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;        ...    } </code>

    '''
    /etc/init.d/nginx reload
    )

  • 相关阅读:
    Java8 Stream Function
    PLINQ (C#/.Net 4.5.1) vs Stream (JDK/Java 8) Performance
    罗素 尊重 《事实》
    小品 《研发的一天》
    Java8 λ表达式 stream group by max then Option then PlainObject
    这人好像一条狗啊。什么是共识?
    TOGAF TheOpenGroup引领开发厂商中立的开放技术标准和认证
    OpenMP vs. MPI
    BPMN2 online draw tools 在线作图工具
    DecisionCamp 2019, Decision Manager, AI, and the Future
  • 原文地址:https://www.cnblogs.com/yipianchuyun/p/10344570.html
Copyright © 2011-2022 走看看