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/607742/

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

(0)

大家都在看

  • 测试执行和软件缺陷

    测试执行 1.基本概念 测试执行就是执行测试用例、提交Bug 单、测试结论的评估和总结等一系列测试活动,测试执行不仅包含测试用例的执行,还包括其它测试活动. 2.注意事项 (1) …

    Linux 2023年6月7日
    066
  • R语言-tidyr和dplyr

    一、安装和加载 1、安装并加载tidyr和dplyr包 install.packages("tidyr") library(tidyr) install.pac…

    Linux 2023年6月8日
    087
  • PYTORCH: 60分钟 | TORCH.AUTOGRAD

    torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练。在本节,你将会对autograd如何帮助神经网络训练的概念有所理解。 背景 神经网络(NNs)是…

    Linux 2023年6月16日
    0160
  • 不同网段之间实现GDB远程调试功能

    在开发过程中,使用gdb远程调试时,会碰到 Linux 服务器的网段和板载设备的网段不是一样的,不能正常使用 gbd 远程调试功能。 板载设备和电脑连接路由器,属于同一个网段,如1…

    Linux 2023年6月7日
    091
  • Golang中字符串、数组、切片排序

    使用Golang的sort包用来排序,包括二分查找等操作。下面通过实例代码来分享下sort包的使用技巧: 使用接口排序: sort.Sort(data Interface) 自定义…

    Linux 2023年6月6日
    0103
  • Go-interface基本概念

    interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。到某个自定义类型要使用的时候,再根据具体情况把这些方法写出来。 定义一个接口: …

    Linux 2023年6月8日
    096
  • 【Linux】在Linux下文件io使用(二)

    在linux下,一切皆文件。当文件被打开时,会返回文件描述符用于操作该文件,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2); 0表示标准输入,1表示标准输出,…

    Linux 2023年6月13日
    0108
  • CentOS 6 安装并配置 MySQL 5.6

    1. 添加 MySQL Yum 存储库 将MySQL Yum存储库添加到系统的存储库列表中; 1.1 到MySQL官网下载MySQL Yum存储库(https://dev.mysq…

    Linux 2023年5月27日
    0110
  • opencv

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月14日
    096
  • SUPERVISOR监控tomcat配置文件

    下方为Supervisor管理tomcat的配置,多注意红色位置路径修改: [program:tomcat] ; 管理的子程序名字,要和项目有关联,不能乱写 command=/us…

    Linux 2023年6月6日
    084
  • 以STM32和FPGA为核心的多组件协调工作系统

    posted @2019-06-09 22:04 xutopia 阅读(709 ) 评论() 编辑 Original: https://www.cnblogs.com/xutopi…

    Linux 2023年6月14日
    0115
  • 建表参数PCTFREE、PCTUSED、INITRANS和MAXTRANS释疑

    PCTFREE与PCTUSED建表时可以指定以上两个参数的值(整数),PCTFREE表示一个块中保留的剩余空间大小百分比,该保留空间主要用于已有记录的更 新操作;PCTUSED表示…

    Linux 2023年6月14日
    085
  • Linux中touch和mkdir、vi的区别

    touch:创建空白文档,新增文件 mkdir:创建一个目录 vi:同touch一样,都是创建一个空白文档 举个栗子:touch w;此时创建一个w的空白文档;file w 可以查…

    Linux 2023年6月13日
    074
  • 【持久层框架】- SpringData-JPA

    SpringData – JPA 😄生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学习心得…

    Linux 2023年6月6日
    072
  • css中*{}和*html,body{}的区别

    css里面定义*{padding:0px;margin: 0px;} 相当于选择器,代表html所有的元素,包括html标签、body标签等; {}大括号里面写入需要给定的属性和属…

    Linux 2023年6月13日
    083
  • 使用bt面板中Python项目管理部署Django项目找不到static采坑记

    工作需要,准备在用django做一个小项目,本地测试没有问题,但是使用bt的工具”python项目管理器”部署到服务器上,找不到static文件 于是尝试解…

    Linux 2023年6月14日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球