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\ndeb 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环境部署完毕

Original: https://www.cnblogs.com/captainmoore/p/11670642.html
Author: captainmoore
Title: Docker配置LNMP环境

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/683849/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 2021.07.13 我们是这样崩的

    至暗时刻 2021年7月13日22:52,SRE收到大量服务和域名的接入层不可用报警,客服侧开始收到大量用户反馈B站无法使用,同时内部同学也反馈B站无法打开,甚至APP首页也无法打…

    技术杂谈 2023年5月30日
    0124
  • datatable 转化成xml以及json

    datatable dt=xxx获取 赋值给应用的字段 var pp=dt.row[0][“datatable里面的字段”].tostring() var …

    技术杂谈 2023年7月10日
    087
  • OS第三章错题

    OS第三章错题 ​ 现在看不知道当时为啥做错了…… ​ 这个题要做对,就要分清楚作业和进程不同的状态。作业有收容、运行、完成三种状态。其中在运行时,作业内的…

    技术杂谈 2023年7月11日
    083
  • 心态崩了,我怎么知道实际生产环境的 B+ 树索引有多少层?

    Q:在实际生产环境中,InnoDB 中一棵 B+ 树索引一般有多少层?可以存放多少行数据? 关于这个问题最近好像在牛客上经常看到,感觉没啥意义,可能主要考察的是对 B+ 索引的理解…

    技术杂谈 2023年7月25日
    0124
  • 碰到shiro反序列化漏洞,大家都是怎么解决的

    项目是借用一个开源项目,然后被发现有shiro反序列化漏洞,如下图: 有了以上漏洞,就可以在服务器执行任意指令。如下图: 解决过程: 1、升级shiro到最新版本1.9.1,却发现…

    技术杂谈 2023年7月11日
    0129
  • Sentinel 系统规则

    https://github.com/alibaba/Sentinel/wiki/%E7%B3%BB%E7%BB%9F%E8%87%AA%E9%80%82%E5%BA%94%E9%…

    技术杂谈 2023年5月31日
    0108
  • 笔记:linux 总结

    1.开始 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和…

    技术杂谈 2023年7月25日
    0154
  • HTB靶场记录之Jarvis

    1、靶机介绍 这次的靶机是Jarvis,很适合练手,难点在提权。 2、信息收集 这里我先用autorecon进行信息收集。 Autorecon集成nmap,nikto等操作可以比较…

    技术杂谈 2023年5月31日
    094
  • SpringBoot中通过AOP整合日志文件

    1.SpringBoot中通过AOP整合日志文件 1. 导入相关的依赖 org.springframework.boot spring-boot-starter org.sprin…

    技术杂谈 2023年6月21日
    0110
  • 程序1024 No Bug!

    程序1024 No Bug! posted @2022-10-24 13:43 南国以南i 阅读(21 ) 评论() 编辑 Original: https://www.cnblog…

    技术杂谈 2023年7月11日
    0111
  • Golang使用swaggo自动生成Restful API文档

    相信很多程序猿和我一样不喜欢写API文档。写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全。但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至…

    技术杂谈 2023年7月24日
    098
  • 对象的合并及拷贝

    Object.assign() Object.assign() 方法用于对象的合并,将所有自身的(非继承的)可枚举属性的值从一个或多个源对象拷贝到目标对象。返回目标对象。目标对象自…

    技术杂谈 2023年5月31日
    0137
  • 在边缘计算场景中使用Dapr

    Dapr 是分布式应用程序可移植、事件驱动的运行时, 这里有几个关键字,我们拆开来看一下: 分布式: 代表共享或是分散,在云原生应用上体现为微服务,在边缘计算场景中代表分散的模块,…

    技术杂谈 2023年5月31日
    0114
  • Pthread并发编程(二)——自底向上深入理解线程

    在本篇文章当中主要给大家介绍线程最基本的组成元素,以及在 pthread 当中给我们提供的一些线程的基本机制,因为很多语言的线程机制就是建立在 pthread 线程之上的,比如说 …

    技术杂谈 2023年7月24日
    0104
  • 写出个灵活的系统竟然可以如此简单!小白也能写出高级的Java业务!

    一 最近正好公司里有个需求,一个短信业务接了多个第三方供应商,某些业务需要查询第三方供应商剩余的短信包数量去选择剩余量最多的渠道去批量发送。有些业务是指定了某个短信供应商,有些场景…

    技术杂谈 2023年7月11日
    0132
  • 网络设备配置-7、配置单臂路由实现跨vlan通信

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    技术杂谈 2023年7月11日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球