用docker-compose搭建LNMP

news2025/1/15 6:50:31

docker-compose搭建LNMP

    • 一、compose 的部署
      • 1.Docker Compose 环境安装
    • 二、编写Docker Compose
      • 1.准备依赖文件,配置nginx
      • 2.配置mysql
      • 3.配置php
      • 4.编写docker-compose.yml
      • 5.执行
      • 6.查看

一、compose 的部署

(1)公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务使用docker-compose管理工作。

(2)环境描述
在这里插入图片描述

1.Docker Compose 环境安装

#下载
curl -L https://github.com/docker/compose/releases/download/v2.0.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#也可直接将docker compose 上传
ls docker-compose 
docker-compose
#修改权限,给与执行权限
chmod +x /usr/local/bin/docker-compose
docker-compose --version
Docker Compose version v2.0.1

在这里插入图片描述

二、编写Docker Compose

1.准备依赖文件,配置nginx

yum -y install tree
mkdir -p /opt/compose_nginx/nginx /opt/compose_nginx/wwwroot
cd /opt/compose_nginx/nginx
cp nginx-1.12.0.tar.gz ./

vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

vim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image <exo>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#上传nginx软件压缩包,并解压
ADD nginx-1.12.0.tar.gz /usr/local/src/
#指定工作目录
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE 80
EXPOSE 443
//方法一:
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf			#关闭 nginx 在后台运行
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
//方法二:
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

2.配置mysql

mkdir /opt/mysql
cd /opt/mysql/
rz -E
rz waiting to receive.
#传入mysql安装包mysql-boost-5.7.20.tar.gz
[root@docker mysql]# vim Dockerfile 

FROM centos:7
MAINTAINER this is mysql image <exo>
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1;make -j4;make install
ADD my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql/;chown mysql:mysql /etc/my.cnf
WORKDIR /usr/local/mysql/bin/
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data;cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/;systemctl enable mysqld
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME [ "/usr/local/mysql" ]
CMD ["/usr/sbin/init"]

3.配置php

mkdir ../php
cd ../php/
rz -E
rz waiting to receive.
#传入php安装包php-7.1.10.tar.bz2
vim Dockerfile 

FROM centos:7
MAINTAINER this is php image <exo>
RUN yum install -y gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
gcc gcc-c++ make pcre-devel;useradd -M -s /sbin/nologin nginx
ADD php-7.1.10.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-7.1.10
RUN ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip ; make -j 4 ; make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
ADD php.ini     /usr/local/php/lib/
ADD php-fpm.conf /usr/local/php/etc/
ADD www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
CMD /usr/local/php/sbin/php-fpm -F

4.编写docker-compose.yml

#先拉取镜像centos:7
docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

version: '3'
services:
  nginx:
    container_name: nginx
    hostname: nginx
    build:
      context: /opt/compose_nginx/nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      lnmp:
        ipv4_address: 172.18.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
  mysql:
    container_name: mysql
    hostname: mysql
    build:
      context: /opt/compose_nginx/mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    networks:
      lnmp:
        ipv4_address: 172.18.0.20
    volumes:
 - /usr/local/mysql
  php:
    container_name: php
    hostname: php
    build:
      context: /opt/compose_nginx/php
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    networks:
      lnmp:
        ipv4_address: 172.18.0.30
    volumes_from:
      - nginx
      - mysql
    depends_on:
      - nginx
      - mysql
    links:
      - nginx
      - mysql
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16

5.执行

docker-compose -f docker-compose.yml up -d 

在这里插入图片描述

6.查看

docker-compose ps
在这里插入图片描述

  • 浏览器访问:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/927001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

磁盘阵列/视频集中存储/安防监控视频智能分析平台新功能:人员聚集

人工智能技术已经越来越多地融入到视频监控领域中&#xff0c;近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能&#xff0c;该平台内置多种AI算法&#xff0c;可对实时视频中的人脸、人体、车辆、物体等进行检测、跟踪与抓拍&#xff0c;支持口罩…

Linux上实现分片压缩及解压分片zip压缩包 - 及zip、unzip命令详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

LiveNVR监控流媒体Onvif/RTSP功能-支持语音对讲支持非国标摄像头SDK语音对讲GB28181级联国标平台非国标转国标语音对讲

LiveNVR支持语音对讲支持非国标摄像头SDK语音对讲GB28181级联国标平台非国标转国标语音对讲 1、确认摄像头是否支持对讲2、摄像头视频类型复合流3、通道配置SDK接入4、视频广场点击播放5、相关问题5.1、如何配置通道获取直播流&#xff1f;5.2、如何GB28181级联国标平台&#x…

AD(第四部分---网表导入及模块化布局设计)

第四部分&#xff1a;网表导入及模块化布局设计 21.导入常见报错解决方法(unknow pin及绿色报错等) 将原理图导入到PCB: 在原理图界面点击右上角设计 导出后&#xff0c;若出现如下错误&#xff0c;则说明没有0805C的电容&#xff1a; 没有电容应该怎么办呢&#xff1f;需要进…

10 倍性价比,万物新生基于 StarRocks 无缝直替 Trino

小编导读&#xff1a; 万物新生成立于2011年&#xff0c;定位为“互联网环保”类型的循环经济企业&#xff0c;是中国最大的二手电子产品交易与服务平台。万物新生集团旗下4大业务线包含&#xff1a;爱回收、拍机堂、拍拍、海外业务 AHS Device。万物新生集团秉承“让闲置不用…

raft算法学习备忘

一致性共识算法 参考:分布式一致性算法应用场景&#xff0c;写了为什么需要共识算法&#xff0c;以及相比于mysql这些主从同步方式的区别。 raft算法简介 一种分布式一致性共识算法的实现方式&#xff0c;机制相比于其它例如paxos来说无论从可读性还是实现机制上要简单很多&…

MQTT协议抓包

MQTT通讯协议的特点 1. 概述 MQTT(Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输)是IBM开发的一个即时通讯协议&#xff0c;有可能成为物联网的重要组成部分。该协议支持所有平台&#xff0c;几乎可以把所有联网物品和外部连接起来&#xff0c;被用来当做…

html-dom核心内容--四要素

1、结构 HTML DOM (文档对象模型) 当网页被加载时&#xff0c;浏览器会创建页面的文档对象模型&#xff08;Document Object Model&#xff09;。 2、核心关注的内容&#xff1a;“元素”&#xff0c;“属性”&#xff0c;“修改样式”&#xff0c;“事件反应”。>四要素…

详解numpy.random.shuffle函数

文章目录 函数原型参数解析该函数的注意事项例子示例代码示例结果 参考 numpy的random模块中的shuffle函数用于np.ndarray数组中的元素打乱顺序&#xff0c;进打乱多维数组的第一维顺序。本博客详细节将该函数的API&#xff0c;并给出示例代码和结果。 函数原型 random.shuff…

【计算机网络】HTTPs 传输流程

HTTPS和HTTP的区别 1、HTTP协议传输的数据都是未加密的&#xff0c;是明文的&#xff0c;使用HTTP协议传输隐私信息非常不安 HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议&#xff0c;要比http协议安全。 2、HTTPS协议需要到CA申请证书&#xff0c;一般…

【C++】开源:Box2D动力学库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Box2D动力学库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c…

LiveNVR通过海康SDK实现Web无插件播放并实现双向语音对讲的注意事项和配置方法

1、确认摄像头是否支持对讲 可以访问摄像头自己的页面&#xff0c;看是否能够对讲。可以看摄像头的音频编码页面&#xff0c;看看音频输入有没有mic的音频输入。如下&#xff1a; 2、摄像头视频类型复合流 确认摄像头的视频类型&#xff0c;是否是复合流。 3、通道配置SD…

第三批广东省智能制造生态合作伙伴名单公布,科东软件再获殊荣!

8月22日&#xff0c;广东省工业和信息化厅公布了第三批广东省智能制造生态合作伙伴名单。科东软件凭借多年在工业操作系统领域的技术积累和创新实力&#xff0c;成功入选广东省智能制造生态合作伙伴名单&#xff08;关键软件领域&#xff09;。 智能制造生态合作伙伴是指为广东…

实现高效消息传递:使用RabbitMQ构建可复用的企业级消息系统

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

计算机竞赛 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

ssh免密配置后没生效问题

一、背景 3台linux服务器搭建集群需要互相做ssh免密&#xff0c;按正常流程操作后验证&#xff0c;免密未生效&#xff0c;还需要输入密码&#xff0c;开始了一路问题定位的历程。。。。 原理请移步 linux服务配置ssh免密 二、思路 &#xff08;一&#xff09;确认免密操作…

虚拟展览有什么优势?设计虚拟展览时需注意什么?

引言&#xff1a; 在这个数字化飞速发展的时代&#xff0c;虚拟展览作为一种崭新的展示方式&#xff0c;正逐渐走入人们的视野。虚拟展览&#xff0c;顾名思义&#xff0c;是通过数字技术将传统的展览呈现方式转变为虚拟的线上体验。 一、什么是虚拟展览 虚拟展览是一种以数…

【Python脚本】轻松实现12306自动抢票脚本,100%成功,假期出行无忧!

文章目录 前言1.导入需要的模块2.初始化WebDriver&#xff1a;3.打开12306网站&#xff1a;4.登录12306账号&#xff1a;5.进入车票查询页面&#xff1a;6.查询车票&#xff1a;7.选择车次和座位&#xff1a;8.填写乘客信息和提交订单&#xff1a;9.处理验证码&#xff1a;10.确…

powerJob的正确部署方式(server部署,其他worker统统指定这个server)

PowerJob 的设计目标为企业级的分布式任务调度平台&#xff0c;即成为公司内部的任务调度中间件。整个公司统一部署调度中心 powerjob-server&#xff0c;旗下所有业务线应用只需要依赖 powerjob-worker 即可接入调度中心获取任务调度与分布式计算能力。 实现PowerJob的设计目标…

nginx 中新增url请求参数

1、nginx中新增配置&#xff1a; set $args "$args&参数名参数值"; 示例&#xff1a; set $args "$args&demo1cn_yaojin&demo2123123&myip$remote_addr"; location / {add_header Access-Control-Allow-Origin *;add_header Access-Contro…