热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker构建简单的PHP+MySQL+nginx+Redis环境,以及docker内PHP扩展安装。

服务器环境(centos7.4)2.docker安装sudoyum-yinstalldocker-cedockerversion查看docker版本安装mysqlnginxredi






  1. 服务器环境(centos7.4)


    2.docker 安装

    sudo yum -y install docker-ce
    docker version //查看docker版本


  2. 安装mysql nginx redis php(非root用户请使用sudo命令)

    第一步:拉取docker中镜像

    docker pull php:7.2-fpm
    docker pull nginx
    docker pull mysql:5.7
    docker pull redis:3.2
    docker images

    第二步:建立容器

    # 自有docker mysql 容器
    docker run --name myDb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
    # 自有docker redis 容器
    docker run --name myRedis -p 6379:6379 -d redis:3.2
    # 自有docker php 容器
    docker run -d -p 9000:9000 --name myPhp -v /usr/html:/var/www/html -v /etc/myPhp:/usr/local/etc/php --link myDb:myDb --link myRedis:myRedis --privileged=true php:7.2-fpm
    # 自有docker nginx 容器
    docker run \
    --name myNginx -d \
    -p 80:80 -p 443:443 \
    -v /usr/html:/usr/share/nginx/html \
    -v /etc/myNginx/nginx.conf:/etc/nginx/nginx.conf:ro \
    -v /etc/myNginx/servers:/etc/nginx/servers \
    -v /etc/myNginx/letsencrypt:/etc/nginx/letsencrypt:rw \
    -v /var/log/myNginx:/var/log/nginx \
    --link myPhp:myPhp --privileged=true \
    nginx

    备注:-v 参数为挂载目录,即将容器内部目录软连到宿主机目录,对于容器的配置和日志挂载可以方便直接在宿主机查看,当然不挂载也可以进入容器内部查看。进入容器命令docker exec -ti containerID /bin/bash

    有两个坑:1.nginx挂载配置目录时nginx.conf最好提前在宿主机对应目录下添加好(因为nginx.conf是个文件非目录,docker挂载会提示一些问题)2. php挂载php.ini时也同样在宿主机中先配置好。后面安装php扩展会用到


第三步. 启动容器

# 查看容器
docker ps -a
# 启动容器
docker start containId

  1. docker php 扩展安装

    我使用pe c l安装

    # 进入php容器
    docker exec -ti myPhp /bin/bash

    使用pecl安装扩展命令, XXX为扩展名

    pecl install xxxx && docker-php-ect-enable xxx

    坑1: 我安装mongodb扩展时出现pecl拉取成功,docker-php-ext-enable脚本命令添加扩展失败的问题。解决如下

    php.ini添加so文件扩展, 并将so 文件从/usr/local/lib/php/extension/o-debug-non-zts-20170718/ 中复制到 对应目录下 /usr/local/lib/php/pecl/20170718下。具体目录路径根据自己环境来看。此处php.ini在容器生成时已挂载,不需要在容器内部再添加新的php.ini


  2. phpinfo()查看环境吧。

    参考:博客:docker 从入门到自动化构建 PHP 环境




docker
php


推荐阅读
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • Redis的默认端口、数据库使用和多端口配置
    本文介绍了Redis的默认端口、数据库使用和多端口配置的方法。通过选择不同的数据库和使用flushdb命令可以实现对不同数据库的访问和清除数据。同时,本文还介绍了在同一台机器上启用多个Redis实例的方法,并讨论了配置认证密码的步骤和注意事项。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
author-avatar
欧阳羽昌53
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有