达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
java程序员
 当前位置:主页 > 高端课程 > java程序员 >

docker下如何搭建MySQL+php-fpm+nginx容器环境,本文详

时间:2020-05-23  来源:未知  作者:广州达内培训

 

docker下搭建MySQL+php-fpm+nginx容器环境

准备镜像

我使用的centos系统,docker-ce最新版本。

先准备好三个镜像

docker pull mysql:5.7

docker pull php:5.6-fpm

docker pull nginx:latest

注意,mysql和php不要使用最新版本,坑很多。另外注意:很多人在学Java高级过程中难免会遇到各种问题解决不了。为此我建了个裙 783802103,里面很多架构师一起交流解答,薪资低于8k的勿进哦!

docker images #查看镜像

一、构建mysql容器

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=ziqin666 -v /mysql:/var/lib/mysql --name your_mysql mysql:5.7

配置容器(进入容器)

docker exec -it   your_mysql    bash

进入之后,要对用户进行授权,以便使用远程连接

连接mysql 输入密码:ziqin666 执行如下命令

GRANT ALL PRIVILEGES ON *.* TO "root"@"localhost" IDENTIFIED BY "ziqin666";
GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "ziqin666";
GRANT ALL PRIVILEGES ON *.* TO "root"@"127.0.0.1" IDENTIFIED BY "ziqin666";
FLUSH PRIVILEGES;

 此时可以使用客户端连接一下看看。(一定要把安全组规则对应端口打开)

二、构建php-fpm容器

准备工作

php.ini 默认是不存在的

在/home/app/phpfile文件夹下创建 php.ini文件和conf.d文件夹

创建容器

 docker run -p 9000:9000 --name your_phpfpm -v /home/app/html:/var/www/html -v /home/app/phpfile:/usr/local/etc/php --link your_mysql:mysql  -d php:5.6-fpm

 命令说明:

  • --name your_phpfpm : 将容器命名为 your_phpfpm。
  • -v /home/app/html:/var/www/html : 将主机中项目的目录 /home/app/html 挂载到容器的 /var/www/html

安装 pdo 以便后边测试数据库连接,在docker的php容器中可以这样来安装

docker-php-ext-install pdo_mysql

安装其他插件也可以使用这种办法

并加入到php.ini

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_pdo.dll

如果插件还不够就需要自己定制镜像

FROM php:7.0.12-fpm
MAINTAINER Tairy <tairyguo@gmail.com>

WORKDIR /working
RUN apt-get update --fix-missing && apt-get install -y 
    g++ autoconf bash git apt-utils libxml2-dev libcurl3-dev pkg-config 
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
    && echo "Asia/Shanghai" > /etc/timezone 
    && docker-php-ext-install iconv curl mbstring 
        xml json mcrypt mysqli pdo pdo_mysql zip 
    && docker-php-ext-configure gd 
        --with-gd 
        --with-freetype-dir=/usr/include/ 
        --with-png-dir=/usr/include/ 
        --with-jpeg-dir=/usr/include/ 
    && docker-php-ext-install gd 
    && docker-php-ext-enable gd 
    && pecl install /pecl/redis-3.0.0.tgz 
    && docker-php-ext-enable redis 
    && apt-get purge -y --auto-remove 
    && rm -rf /var/cache/apt/* 
    && rm -rf /var/lib/apt/lists/* 
    && rm -rf /pecl

三、安装nginx

配置文件目录:/home/app/nginx/conf.d (注释:没有的文件自主创建哈)

在配置文件目录新建 default.conf

server
{
  listen 80;
  server_name localhost;

  location / { 
    root /usr/share/nginx/html; 
    index index.html index.htm; 
  }
  location ~ .php$ { 
    fastcgi_pass your_phpfpm:9000;  #此处写docker里边php 的名称: your_phpfpm
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
    include fastcgi_params; 
  } 

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /usr/share/nginx/html;
  }
}

创建容器

docker run -p 81:80  --name your_nginx 
   -v /home/app/nginx/www:/usr/share/nginx/html 
   -v /home/app/nginx/conf.d:/etc/nginx/conf.d 
   --link your_phpfpm:phpfpm  
   -d nginx:latest

映射容器中的phpfpm和mysql都为固定,不能修改!

这里需要配置nginx使用用户,即把/etc/nginx/nginx.conf里的nginx用户修改为www-data,同时把/home/app/nginx/www下的文件所有者改为www-data:www_data,否则访问会有权限问题

chown -R www-data:www-data www

四 、 测试

1、查看服务

docker  ps -a

STATUS 皆为up ,即运行中

2、测试 php解析

在宿主机 /home/app/nginx/www/目录下修改 index.php 文件。

<?php echo phpinfo();

3、测试mysql 链接

修改 index.php

<?php
//echo phpinfo();
$dbms="mysql";     //数据库类型
$host="your_mysql"; //数据库主机名,此处写mysql 容器的名字
$dbport = "3306";
$dbName="mysql";    //使用的数据库
$user="root";      //数据库连接用户名
$pass="123456";          //对应的密码
$dsn="$dbms:host=$host;port=$dbport;dbname=$dbName";

try {
    $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
    echo "successful<br/>";
   //你还可以进行一次搜索操作
    // foreach ($dbh->query("SELECT * from user") as $row) {
    //     print_r($row); //你可以用 echo($GLOBAL); 来看到这些值
    // }
    
    $dbh = null;
} catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}

访问ip , 到正确的输出,就证明我们的配置成功了。最后注意:很多人在学Java高级过程中难免会遇到各种问题解决不了。为此我建了个裙 783802103,里面很多架构师一起交流解答,没基础勿进哦!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理




上一篇:redis的缓存穿透、雪崩、击穿
下一篇:没有了

友情链接:
  • 全球最大晶圆代工半导体制造厂,台积电斥资订购艾斯摩尔机器设备
  • 英特尔依然是那个英特尔,且看英特尔的城防体系
  • 支持双 DRAM 内存接口,慧荣企业级 SSD 主控方案披露
  • 在全球被反垄断罚款,冤!高通到底哪里得罪了欧盟?
  • 强强联合!万业、微电子所和芯鑫共同打造全新半导体设备
  • 复旦大学校长称:对于集成电路产业发展,大学应该主动担当
  • 技术再升级!无锡中科芯攻克晶圆级再布线及晶圆级凸点制备关键技
  • 聚力!万业企业设立集成电路装备集团,提供自主可控设备
  • 德州仪器C2000微控制器增强连通性和控制性
  • 英特尔打出降价策略,以免被竞争对手 AMD 打败?
  • 贸易摩擦的闹剧没有赢家,苹果有勇气离开中国吗?
  • 图像信号与视觉处理器的发展趋势
  • 真干快消品定位方案班(第二期)火热开班
  • Java集合 ArrayList原理及使用
  • TDD(测试驱动开发)死了吗?
  • JAVA基础之XML相关
  • javaweb项目搭建ehcache缓存系统
  • 每日一码——字符串统计
  • 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
  • 九:模板方法模式
  • 十二:命令模式(人员解耦和)
  • Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
  • SpringCloud学习(SPRINGCLOUD微服务实战)一
  • 记一次微信网页授权后获取用户信息并重定向
  • 速途新营销五点实战洞察解码“品效合一”
  • 十一:外观模式详解(Service,action与dao)
  • 手把手教你学会 基于JWT的单点登录
  • mysql锁机制总结,以及优化建议
  • 解决多个版本jar包冲突【jar内包名重命名】
  • 中国首张5G终端电信设备进网许可证 华为Mate 20 X 5G版入网
  • RPC之Thrift
  • 高级Java工程师必备 ----
  • 天猫618期间实物支付GMV增长38.5%
  • 换季了,老板你的库存处理好了吗?
  • 从“618”大数据看中国消费新活力
  • 小米生态链:贵在格局感与收放度
  • CODING 2.0 企业级持续交付解决方案
  • 老铁奇趴“新京济” 快手*京东618战报出炉
  • 中小企业新媒体运营基本技能
  • 上汽大通房车再度携手LINE FRIENDS 魔都巡游顺利开启
  • 华为高端手机国内市场份额超苹果夺得榜首
  • 中国智能制造分析报告
  • iPlus艾加营销助力腾讯广告牵手吴晓波 推进商业IP变现
  • 2019世界新能源汽车大会7月1日将在海南举行
  • 区域酒企如何转型突围
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载