首页 >

学无止境

  • Docker构建PHP环境(一)之MySQL

    贾磊 贾磊

    发布时间: 2018-12-25 15:13:11 分类:Docker
    一、准备工作1、安装docker和git
    apt-get install docker.io
    
    apt-get install git

    111.png
    2、创建环境根目录:
    mkdir -p /wwwroot/server && cd /wwwroot/server
    二、安装MySQL(8.0+)1、
    docker pull mysql:latest(拉取最新镜像,可以修改为你需要的版本号)
    
    docker images(查看镜像)

    image.png
    2、创建mysql所需文件及目录:
    mkdir mysql && cd mysql/ (在server下目录安装)
    
    mkdir logs
    3、运行一个mysql容器将里面的默认配置copy出来
    docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql
    启动成功后:
    image.png

    将容器里的配置copy出来:
    docker cp mysql:/var/lib/mysql/  $PWD/data/
    docker cp mysql:/etc/mysql/conf.d $PWD/conf

    image.png
    ojbk!!!  Copy完删除这个容器吧
    docker rm -f mysql
    重新运行一个新的mysql容器:
    docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql
     -e MYSQL_ROOT_PASSWORD=root -d mysql
    ok 进入容器登录mysql试试
    docker exec -it mysql(容器名称或id) /bin/bash

    image.png
    退出容器  exit或者ctrl+d

    命令说明:

    ·        -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。

    ·        --name 指定当前容器名称。

    ·        -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf

    ·        -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs

    ·        -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql

    ·        -e MYSQL_ROOT_PASSWORD=root初始化 root 用户的密码。

  • Docker构建PHP环境(二)之Redis

    贾磊 贾磊

    发布时间: 2018-12-25 15:22:53 分类:Docker
    docker pull redis

    mkdir redis && cd redis(在server下目录安装)

    docker run --name redis -p 6379:6379 -v $PWD/data:/data  -d redis redis-server --appendonly yes

    redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置

    进入容器测试
    image.png
  • Docker构建PHP环境(三)之PHP7.2

    贾磊 贾磊

    发布时间: 2018-12-25 15:13:27 分类:Docker
    1、拉取php镜像
    docker pull php:7.2-fpm

    2、创建项目目录

    mkdir -p /wwwroot/server/project
    mkdir php-fpm && cd php-fpm (在server下目录安装)
    mkdir logs

    3、运行一个临时php容器
    docker run --name testphp -d php:7.2-fpm

    4、复制php配置文件等

    docker cp testphp:/usr/local/etc/php $PWD/php
    cd php && cp php.ini-development php.ini
    cd ..(返回php-fpm目录下)

    5、运行新的php容器
    docker run -p 9000:9000 --name php7.2 -v /wwwroot/server/project:/www -v $PWD/php:/usr/local/etc/php 
    -v $PWD/logs:/phplogs --link mysql:mysql --link redis:redis  -d php:7.2-fpm

    运行成功后删除testphp:  docker rm -f testphp
    *注:(--link参数:把php和mysql还有reids建立连接,当你用php连接mysql的时候host地址可以添mysql, redis同理)
  • Docker构建PHP环境(四)之Nginx

    贾磊 贾磊

    发布时间: 2018-12-25 15:13:34 分类:Docker
    1、拉取nginx镜像

    docker pull nginx

    2、创建nginx目录
    mkdir nginx && cd nginx (在server下目录安装)

    3、运行一个临时nginx容器

    docker run -it --name testnginx -p 80:80 -d nginx

    4、把里面的默认文件copy出来nginx.conf
    docker cp testnginx:/etc/nginx/nginx.conf nginx.conf

    5、删除临时文件

    docker rm -f testnginx

    6、运行新的nginx容器

    docker run -p 80:80 --name mynginx -v /wwwroot/server/project:/www -v $PWD/conf.d:/etc/nginx/conf.d 
    -v $PWD/logs:/wwwlogs -v $PWD/nginx.conf:/etc/nginx/nginx.conf --link php7.2  -d nginx

    7、修改nginx配置文件
    cd conf.d
    vim default.conf
    加入你的server配置文件一下是我的配置
    server {
     
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
     
        # For https
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server ipv6only=on;
        # ssl_certificate /etc/nginx/ssl/default.crt;
        # ssl_certificate_key /etc/nginx/ssl/default.key;
     
    server_name localhost;
    ###注意 这里写的是nginx容器中的目录
        root /www;
        index index.php index.html index.htm;
     
        location / {
             try_files $uri $uri/ /index.php$is_args$args;
        }
     
        location ~ \.php$ {
            try_files $uri /index.php =404;
            #php7.2就是你安装php的时候link的名字
            fastcgi_pass php7.2:9000;
            fastcgi_index index.php;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            #fixes timeouts
            fastcgi_read_timeout 600;
            include fastcgi_params;
        }
     
        location ~ /\.ht {
            deny all;
        }
     
        location /.well-known/acme-challenge/ {
            root /var/www/letsencrypt/;
            log_not_found off;
        }
    }

    8、重启nginx

    docker restart mynginx

    9、测试

    cd /wwwroot/server/project
    echo '<?php \n phpinfo();'>> index.php

    10、访问你的服务器
    image.png