简单几步就教会你如何使用 dockerfile 制作 LNMP 镜像,还不赶紧学起来

2023-10-27

前言

在这里插入图片描述

注意:搞docker的环境时,切记把firewalld和selinux关了,否则docker很多服务会起不来

一、dockerfile撰写php镜像

FROM centos:7.4.1708
ENV TIME_ZOME Asia/Shanghai
ARG WJ="php-7.1.10"
ADD $WJ.tar.bz2 /opt
RUN yum -y install gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel bison \
    && mkdir -p /usr/local/php/etc \
    && cd /opt/$WJ \
    && ./configure --prefix=/usr/local/php \
        --with-config-file-path=/usr/local/php/etc \
        --with-gd --with-mysqli \
        --with-openssl --with-zlib --with-curl \
        --with-jpeg-dir --with-png-dir --with-iconv \
        --enable-fpm --enable-zip --enable-mbstring \
    && make -j 2 \
    && make install \
    && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \
    && cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf \
    && sed -i '/;daemonize/a\daemonize = no' /usr/local/php/etc/php-fpm.conf \
    && sed -i 's/127.0.0.1/0.0.0.0/g' /usr/local/php/etc/php-fpm.d/www.conf \
    && echo "${TIME_ZOME}" > /etc/timezone \
    && ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime \
    && rm -rf /opt/local/php* \
    && yum clean all \
    && yum -y remove gcc gcc-c++ make \
    && mkdir -p /usr/local/nginx/html \
    && echo -e "<?php\nphpinfo();\n?>" > /usr/local/nginx/html/index.php

WORKDIR /usr/local/php/
EXPOSE 9000
CMD ["sbin/php-fpm","-c","etc/php-fpm.conf"]

文件结构:

在这里插入图片描述

创建php镜像:

在这里插入图片描述

二、dockerfile撰写mysql镜像

FROM centos:7.4.1708
ADD mysql-5.6.26.tar.gz /opt
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo \
    &&  useradd -s /sbin/nologin mysql \
    && yum -y install gcc gcc-c++ make pcre-devel expat-devel perl ncurses-devel autoconf cmake \
    && cd /opt/mysql-5.6.26/ \
    && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DSYSCONFIDIR=/etc -DMYSQL_DATADIR=/home/mysql/ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \
    && make -j2 \
    && make install \
    && cp -f support-files/my-default.cnf /etc/my.cnf \
    && cp support-files/mysql.server /etc/init.d/mysqld \
    && chown -R mysql:mysql /usr/local/mysql/ \
    && sed -i 's/^basedir/basedir=\/usr\/local\/mysql/g' /etc/init.d/mysqld \
    && sed -i 's/^datadir/datadir=\/home\/mysql/g' /etc/init.d/mysqld \
    && /usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysql
ENV PATH /usr/local/mysql/bin:$PATH
EXPOSE 3306
ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]

文件结构:

在这里插入图片描述

创建mysql镜像:

在这里插入图片描述

三、dockerfile撰写nginx镜像

FROM centos:7.4.1708
ADD nginx-1.12.0.tar.gz /opt
RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make \
    && useradd -M -s /sbin/nologin nginx \
    && cd /opt/nginx-1.12.0/ \
    && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-file-aio --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module \
    && make \
    && make install \
    && ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx \
    && echo -e "events {\nuse epoll;\nworker_connections  1024;\n}\nhttp {\nserver_tokens on;\nserver {\nlisten       80;\nserver_name  localhost;\nlocation / {\nroot   html;\nindex  index.html index.htmi index.php;\n}\nerror_page   500 502 503 504  /50x.html;\nlocation = /50x.html {\nroot   html;\n}\nlocation ~ \.php$ {\nroot           html;\nfastcgi_pass   172.168.184.30:9000;\nfastcgi_index  index.php;\nfastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;\ninclude        fastcgi_params;\n}\n}\n}" > /usr/local/nginx/conf/nginx.conf 
ENV PATH /usr/local/nginx/sbin:$PATH
WORKDIR /usr/local/nginx/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

文件结构:

在这里插入图片描述

创建mysql镜像:

在这里插入图片描述

四、查看镜像构建情况

在这里插入图片描述

五、分别开启nginx、mysql和php镜像

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

六、进行测试

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单几步就教会你如何使用 dockerfile 制作 LNMP 镜像,还不赶紧学起来 的相关文章

随机推荐

  • vue项目创建

    默认3 默认2 自定义配置 js语法编辑器 ts 渐进式web应用程序 路由 状态管理器 css处理器 代码检查 单元测试 端对端测试 选择版本 路由是否选择历史模式 选择css预处理器 配置放在哪里 保存这个项目作为一个模版使用 npm
  • 【网络】Linux网络问题汇总(一)

    网卡设置了静态获取 仍然获取动态IP的解决方法 问题展示 网卡配置静态方式获取 仍然通过dhcp获取到了ip 且每次分配的ip都一样 root senlian cat etc sysconfig network scripts ifcfg
  • OAUTH之 钉钉第三方授权登录

    文章目录 OAUTH之钉钉第三方授权登录 前期用到的工具 获取access token 请求地址 请求方法 响应 扫码 使用账号密码 获取 临时 code 参数重要说明 直接访问 扫码登录 使用账号密码登录第三方网站 根据 sns 临时授权
  • 性能测试度量指标

    1 响应时间 响应时间指从用户或事务在客户端发起一个请求开始 到客户端接收到从服务器端返回的响应结束 这整个过程所消耗的时间 在性能测试实践中 为了使响应时间更具代表性 响应时间通常是指事务的平均响应时间ART 在实践中要注意 不同行业 不
  • node+koa2+mongodb搭建RESTful API风格后台

    RESTful API风格 在开发之前先回顾一下 RESTful API 是什么 RESTful 是一种 API 设计风格 并不是一种强制规范和标准 它的特点在于请求和响应都简洁清晰 可读性强 不管 API 属于哪种风格 只要能够满足需要
  • Unity之URP开启PostProcessing后使用RenderTexture渲染模型背景为不透明

    项目需要在UI界面显示角色模型 使用一个模型相机投射到RT上然后放在Raw Image上 现在这个模型相机需要开启后处理Post Processing 只针对模型添加了后处理效果 问题是开启后 Raw Image背景变了 把UI背景图遮住了
  • TensorFlow找不到cudart64_110.dll not found的解决方案

    问题描述 当我写了两句小程序准备开启我的TensorFlow之路时候 import tensorflow as tf hello tf constant hello tensorflow print Hello python sess tf
  • 安防监控视频云存储平台EasyNVR对接EasyNVS时,一直不上线该如何解决?

    视频安防监控平台EasyNVR可支持设备通过RTSP Onvif协议接入 并能对接入的视频流进行处理与多端分发 包括RTSP RTMP HTTP FLV WS FLV HLS WebRTC等多种格式 近期有用户在使用安防视频平台EasyNV
  • STLvector源码——实现框架、具体实现的详细分段剖析(重点是insert_aux在指定位置插入元素和在指定位置插入n个元素的源码)、vector实现的基本函数总结

    VS2010的源码真的让人放弃 还是安安稳稳看侯捷老师的SGI 源码 SGI vector 实现框架 include
  • Vue语言基础——ECMAScript 6.0

    ECMAScript 1ES6基础 1 1ES6简介 1 2let命令 1 3const命令 2 变量的结构赋值 2 1数组的解构赋值 2 2对象的解构赋值 2 3解构赋值的主要用途 3 箭头函数 3 1箭头函数的定义 3 2箭头函数与解构
  • Feign的使用及原理剖析

    feign使用及原理剖析 一 简介 Feign是一个http请求调用的轻量级框架 可以以Java接口注解的方式调用Http请求 Feign通过处理注解 将请求模板化 当实际调用的时候 传入参数 根据参数再应用到请求上 进而转化成真正的请求
  • MAC下配置PHPMyAdmin

    最近需要用到MySQL 用到了客户端的管理工具 PHPMyAdmin 一 配置Apache 在 Mac OS中PHP apache 环境是自带的 不需要单独下载安装包 只需要简单配置一下即可 首先打开终端输入命令 sudo vim etc
  • 使用Mac终端给文件夹加密压缩

    首先进入文件目录cd Desktop 否则的话 压缩出来的文件会包含长长的文件路径 就像下面这样 zip er zip file name file name zip file name 是即将要生成的zip包的名字 当前路径下是不存在的
  • ubuntu16.04配置以太坊环境

    没有guo审 放了图片 我尽力了 希望大家都能够不走弯路
  • 记一次网关项目Actuator未授权访问漏洞的修复方案

    前言 公司项目在做等保测评的时候发现网关项目存在Actuator未授权访问漏洞 在 Actuator 启用的情况下 如果没有做好相关权限控制 非法用户可通过访问默认的执行器端点 endpoints 来获取应用系统中的监控信息 从而导致信息泄
  • Java 功能篇之 Object 转Map

    工具类源码 import java lang reflect Field import java util HashMap import java util Map import org slf4j Logger import org sl
  • 汽车行业相关课程推荐

    ATC汽车电子课程 很适合汽车行业人士学习
  • springmvc项目实现自动化部署

    在一个ssm项目中 实际执行的文件在target的和项目同名的文件夹中 部署到服务器上时使用target内的war包即可 在本地服务器上配置mvn命令 将target文件夹删除再下载最新版的就可以做到target文件夹的更新 mvn cle
  • 改变世界的17个数学公式

    目录 1 勾股定理 2 对数 3 微积分 4 万有引力定律 5 1的平方根 6 多面体欧拉定理 7 正态分布 8 波动方程 9 傅里叶变换 10 纳维 斯托克斯方程 11 麦克斯韦方程组 12 热力学第二定律 13 爱因斯坦的质能方程 14
  • 简单几步就教会你如何使用 dockerfile 制作 LNMP 镜像,还不赶紧学起来

    简单几步就教会你如何使用dockerfile制作LNMP镜像 前言 一 dockerfile撰写php镜像 二 dockerfile撰写mysql镜像 三 dockerfile撰写nginx镜像 四 查看镜像构建情况 五 分别开启nginx