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)

大家都在看

  • docker save与docker export实现docker镜像与容器的备份

    本来想写一篇关于docker save/export/commit/load/import之间的关系的文章,后来看了看,已经有很多人写过了,我就不做重复工作了。 参见: docke…

    Linux 2023年6月6日
    0111
  • ssh远程连接服务(二)三台虚拟机之间的免密登录

    创建三台虚拟机主机名分别为node01、node02、node03 在node01虚拟机上生成密钥对 然后将生成的公钥分别复制到node02、node03的虚拟机上(前提三台虚拟机…

    Linux 2023年6月7日
    0101
  • Red Hat Enterprise Linux (RHEL) 8.5 发布(含下载)

    2021 年 11 月 10 日,红帽企业 Linux (RHEL) 8.5 现已正式发布 (GA),并带来了新功能和改进,以帮助简化部署、优化性能并帮助降低环境中的风险。无论您的…

    Linux 2023年5月27日
    0113
  • Linux机器在命令行操作时开启/关闭代理

    命令行操作时,如果需要连接通过代理才能访问的地址,可以通过配置当前shell的配置文件来手动开启/关闭代理 注意:代理只对当前用户当前shell生效,切换用户或者重新连接需要重新开…

    Linux 2023年6月6日
    0104
  • webshell查杀的方法

    从您反馈的情况看,是您的网站被植入了webshel后门文件导致的。您可以先对当前的服务器做下快照备份,然后将您的网站代码拷贝到本地进行下webshell查杀:https://www…

    Linux 2023年5月28日
    0116
  • linux 系统调优相关参数

    posted @2022-09-05 00:32 LB_运维技术 阅读(4 ) 评论() 编辑 Original: https://www.cnblogs.com/libin-li…

    Linux 2023年6月13日
    0122
  • PHP8.1.10手动安装教程及报错解决梳理

    安装php版本8.1.10:https://www.php.net/distributions/php-8.1.10.tar.gz 易错步骤梳理: 1、安装的版本是php8,因此教…

    Linux 2023年6月6日
    098
  • MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)

    CRUD 官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)【本文章使用的mybatisplus版本为3.5.2】 条件构造器 一般都…

    Linux 2023年6月7日
    0125
  • Redis 的 5 个常见使用场景

    在这篇文章中,我们将阐述 Redis 最常用的使用场景,以及那些影响我们选择的不同特性。 最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存…

    Linux 2023年5月28日
    0114
  • acl/客户端缓存/多级缓存

    redis6安装注意点 我们课程里忽略了,就不去安装了,仅仅只提供安装文档,redis6的安装其实和redis5安装差不多,只是需要注意gcc的版本需要提高,不然编译会出错。参考慕…

    Linux 2023年5月28日
    099
  • 虚拟机Ubuntu22.04 chrome页面显示异常

    虚拟机上ubuntu安装chrome出现页面显示异常的解决办法 将chrome上的硬件加速关掉就能恢复正常 具体原因是啥,有没有大佬能解答以下啊 引用:https://blog.c…

    Linux 2023年6月13日
    089
  • Vue3 封装 Element Plus Menu 无限级菜单组件

    本文分别使用 SFC(模板方式)和 tsx 方式对 Element Plus el-menu 组件进行二次封装,实现配置化的菜单,有了配置化的菜单,后续便可以根据路由动态渲染菜单。…

    Linux 2023年6月7日
    0148
  • 使用 sh -x 进行 shell 脚本调试

    转载请注明出处: sh -x 命令的执行,会将shell 命令的每一个执行步骤进行打印,可以查看到 整个命令或脚本的执行过程的 debug。 sh -n 只读取shell脚本,检测…

    Linux 2023年5月28日
    0120
  • 关于Linux_CentOS8.0安装软件时遇到的坑

    新的一年已经开始,准备换工作。在此之前,我已经做好了升级准备,买了一台服务器。 [En] The new year has begun, ready to change jobs….

    Linux 2023年5月27日
    0139
  • 2021年度总结 2022年度规划

    2021年 计划 1、学习更多的知识😁 2、学习408的知识,至少能熟悉计算机组成原理、操作系统、计算机网络、算法这几个的联系,区别等。😁 3、整理408的知识到博客上。 (一篇未…

    Linux 2023年6月13日
    097
  • 简单交叉编译学习

    交叉编译 交叉编译是在一个平台上生成另一个平台上的可执行代码。 同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。通常是自己的电脑写好代码编译…

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