Docker Compose编排部署LNMP服务
目录
安装docker-ce
阿里云镜像加速器
文件
启动
安装docker-ce
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
--2023-08-03 18:34:32-- http://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 140.249.32.202, 140.249.32.203, 140.249.32.204, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|140.249.32.202|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”
100%[============================================================>] 2,523 --.-K/s 用时 0s
2023-08-03 18:34:37 (356 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
已加载插件:fastestmirror, product-id, search-disabled-repos, subscription-manager
可能报错 把原来的删掉从新安装
Transaction check error:
package device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 is already installed
错误概要
-------------
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, product-id, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
阿里云镜像加速器
[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# vim /etc/docker/daemon.json
[root@localhost ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 24.0.5
API version: 1.43
Go version: go1.20.6
Git commit: ced0996
Built: Fri Jul 21 20:39:02 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.5
API version: 1.43 (minimum version 1.12)
Go version: go1.20.6
Git commit: a61e2b4
Built: Fri Jul 21 20:38:05 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.22
GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca
runc:
Version: 1.1.8
GitCommit: v1.1.8-0-g82f18fe
docker-init:
Version: 0.19.0
GitCommit: de40ad0
配置基础镜像
[root@localhost ~]# cat centos-7-x86_64.tar.gz | docker import - centos:7
sha256:2069099083a89e56bd326f5352b6d0e7d3ad02ba20d00b5b0305b810501db76c
之前可能有冲突所以删除
[root@localhost ~]# docker rm -f $(docker ps -aq)
c0e35fc73253
文件
编写compose文件
[root@compose compose_lnmp]# cat docker-compose.yml
version: '3'
services:nginx:hostname: nginxbuild:context: ./nginxdockerfile: Dockerfileports:- 80:80networks:- lnmpvolumes:- ./wwwroot:/usr/local/nginx/htmlphp:hostname: phpbuild:context: ./phpdockerfile: Dockerfileports:- 9000:9000networks:- lnmpvolumes:- ./wwwroot:/usr/local/nginx/htmlmysql:hostname: mysqlimage: mysql:5.6ports:- 3306:3306networks:- lnmpvolumes:- ./mysql/conf:/etc/mysql/conf.d- ./mysql/data:/var/lib/mysqlcommand: --character-set-server=utf8environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: wordpressMYSQL_USER: userMYSQL_PASSWORD: user123networks:lnmp:可以看到一份标准配置文件应该包含 version、services、networks 三大部分,共有三级标签,每一级都是缩进两个空格。下面来详细说明一下里面的内容:
version: '3' 这是定义compose的版本号为version 3,可以参考官方文档详细了解具体有哪些版本 https://docs.docker.com/compose/compose-file/
services:
nginx:这是services下面的二级标签,名字用户自己定义,它将是服务运行后的名称;
hostname: nginx 这是定义容器的主机名,将写入到/etc/hostname中;
build:context: ./nginx 指定nginx服务的上下文路径;dockerfile:Dockerfile 指定通过上面指定路径中的Dockerilfe来构建;
ports:- 80:80 端口映射没什么好说的;
networks:-lnmp 指定的网络环境
volumes:把宿主机的/wwwroot目录绑定到容器中的/usr/local/nginx/html目录;php:这个二级标签服务和下面的内容跟nginx差不多;
mysql:这个二级标签服务也和nginx、php差不多,唯一不同的是多了个images标签、还有定义了些环境变量。
image: mysql:5.6 它是通过mysql:5.6镜像来构建mysql服务器,前面nginx、php都指定了上下文通过Dockerfile来构建的。environment:MYSQL_ROOT_PASSWORD:定义root用户密码变量为123456;MYSQL_DATABASE:定义了数据变量为wordpress;MYSQL_USER:定义了普通用户变量为user;MYSQL_PASSWORD:定义了普通用户密码变量为user123;
3、networks:lnmp: 相当于执行docker network create lnmp命令了;
[root@localhost compose_lnmp]# ll
总用量 4
-rw-r--r--. 1 root root 807 6月 3 2019 docker-compose.yml
drwxr-xr-x. 4 root root 30 6月 22 2019 mysql
drwxr-xr-x. 2 root root 83 8月 3 20:57 nginx
drwxr-xr-x. 2 root root 64 8月 3 20:56 php
drwxr-xr-x. 2 root root 41 6月 22 2019 wwwroot
[root@localhost compose_lnmp]# ls mysql
conf data
[root@localhost compose_lnmp]# vim mysql/conf/my.cnf[mysqld]
datadir=/var/lib/mysql
socket=/tmp/mysql.sock
symbolic-links=0[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/tmp/mysql.pid
[root@localhost compose_lnmp]# vim nginx/nginx.conf user nginx nginx;
worker_processes 1;
worker_rlimit_nofile 102400;events {use epoll;worker_connections 4096;
}events {use epoll;worker_connections 4096;
}http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;charset utf-8;location / {root html;index index.php index.html index.htm;}location ~ \.php$ {root html;fastcgi_index index.php;fastcgi_pass 192.168.50.59:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}
}daemon off;
[root@localhost compose_lnmp]# vim mysql/data/
auto.cnf ib_logfile0 mysql/ wordpress/
ibdata1 ib_logfile1 performance_schema/
[root@localhost compose_lnmp]# vim nginx/nginx.conf
[root@localhost compose_lnmp]# vim php/ 源文件照搬的
Dockerfile php-5.6.39.tar.gz php.ini
[root@localhost compose_lnmp]# vim php/php.ini [PHP];;;;;;;;;;;;;;;;;;;
; About php.ini ;
;;;;;;;;;;;;;;;;;;;
[root@localhost compose_lnmp]# vim wwwroot/index.
index.html index.php
[root@localhost compose_lnmp]# vim wwwroot/index.html
[root@localhost compose_lnmp]# vim wwwroot/index.php <?php
phpinfo();
?>
~ [root@localhost compose_lnmp]# vim wwwroot/index.html www.crushlinux.com
~
[root@localhost ~]# /root/docker-compose -f docker-compose.yml up -d
-bash: /root/docker-compose: 权限不够
[root@localhost ~]# chmod 777 /root/docker-compose
[root@localhost ~]# cd compose_lnmp
启动
[root@localhost compose_lnmp]# /root/docker-compose -f docker-compose.yml up -d
成功
查看
[root@localhost compose_lnmp]# /root/docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------
compose_lnmp_mysql_1 docker-entrypoint.sh --cha ... Up 0.0.0.0:3306->3306/tcp,:::3306->3306/tc
p
compose_lnmp_nginx_1 /run.sh Up 0.0.0.0:80->80/tcp,:::80->80/tcp
compose_lnmp_php_1 ./sbin/php-fpm -c /usr/loc ... Up 0.0.0.0:9000->9000/tcp,:::9000->9000/tc
成功
拜拜了
相关文章:

Docker Compose编排部署LNMP服务
目录 安装docker-ce 阿里云镜像加速器 文件 启动 安装docker-ce [rootlocalhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo --2023-08-03 18:34:32-- http://mirrors.aliyun.com/repo/Centos-7.repo 正在解析主机 m…...

git使用(常见用法)
一.下载git git官方下载跳转 安装简单,有手就行 二. git的简单使用 1. 连接远程仓库 #初始化 git init #配置账户 git config --global user.name “输入你的用户名” git config --global user.email “输入你的邮箱” git config --list #--q退出 #配置验证邮箱 ssh-key…...

用例拆分情况考虑方案
文章目录 1、方案一方案概述方案分析(1) 把对应图商地图的逻辑给分离开(2) 要使用命令行的方式执行方法 2、方案二3、最终决定 1、方案一 方案概述 每个图商(GD、BD、自建)拆分成单独的类 把参数化的几个图商类别拆分成对应的图商类,在每个类…...

一文搞懂IS-IS报文通用格式
报文格式 IS-IS报文是直接封装在数据链路层的帧结构中的。PDU可以分为两个部分,报文头和变长字段部分。其中头部又可分为通用头部和专用头部。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。 IS-IS的PDU有4种类…...
位置参数 关键字参数
在Python中,函数参数可以按照位置或关键字来传递。这导致了两种主要的参数类型:位置参数和关键字参数。 位置参数: 这是最常见的参数类型,当我们调用函数时,传递给函数的参数值是按照它们的位置来确定的。例如,def fun…...

【果树农药喷洒机器人】Part5:基于深度相机与分割掩膜的果树冠层体积探测方法
文章目录 一、引言二、树冠体积测量对比方法2.1冠层体积人工测量法2.2冠层体积拟合测量法 三、基于深度相机与分割掩膜探测树冠体积方法3.1像素值与深度值的转换3.2树冠体积视觉探测法3.3实验分析 总结 一、引言 果树靶标探测是实现农药精准喷施的关键环节,本章以果…...

生活小妙招之UE custom Decal
因为这几年大部分时间都在搞美术,所以博客相关的可能会鸽的比较多,阿巴阿巴 https://twitter.com/Tuatara_Games/status/1674034744084905986 之前正好看到一个贴花相关的小技巧,正好做一个记录,也在这个的基础上做一些小的拓展…...

DAY02_Spring—第三方资源配置管理Spring容器Spring注解开发Spring整合Mybatis和Junit
目录 一 第三方资源配置管理1 管理DataSource连接池对象问题导入1.1 管理Druid连接池1.2 管理c3p0连接池 2 加载properties属性文件问题导入2.1 基本用法2.2 配置不加载系统属性2.3 加载properties文件写法 二 Spring容器1 Spring核心容器介绍问题导入1.1 创建容器1.2 获取bean…...

Icon图标有哪些在线设计的工具推荐
虽然icon图标相对较小,但icon图标在设计中非常重要。高质量的icon图标通常可以决定设计工作的质量。高质量的在线生产icon工具可以提高设计师图标设计的效率。此外,优秀的图标设计师还可以让设计师快速开始图标设计工作。本文为您选择了五种在线生成icon…...

深度学习环境安装依赖时常见错误解决
1.pydantic 安装pydantic时报以下错误: ImportError: cannot import name Annotated from pydantic.typing (C:\Users\duole\anaconda3\envs\vrh\lib\site-packages\pydantic\typing.py) 这个是版本错误,删除装好的版本,重新指定版本安装就…...

opencv基础47 查找图像轮廓cv2.findContours()详解
什么是图像轮廓? 图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中,轮廓通常被用于检测物体、分割图像以及提取物体特征。 图像轮廓是由一系列连续的像素点组成,这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的…...

Splunk Enterprise for mac(可视化数据分析软件)详细安装教程
Splunk Enterprise for Mac是一款可视化数据分析软件,为你提供强大的搜索、 分析和可视化功能,可以帮助您获得有价值的业务情报,从你机器生成的数据。还在等什么?有需要的朋友,欢迎前来下载! 实时监测和搜…...

如何实现环卫项目运营的数字化管理,达到企业降本增效的目的?
数字环卫是指利用数字技术和数据驱动的方法来改善环卫流程和管理。数字环卫的底层逻辑在于利用技术来优化运营、提高效率并降低环卫项目管理成本。如何实现环卫工程运营数字化管理,达到降本增效的目标: 1.数据收集和分析:实施数据收集机制&a…...

React Native连接Zebra斑马打印机通过发送CPCL指令打印(Android 和 iOS通用)
自 2015 年发布以来,React Native 已成为用于构建数千个移动应用程序的流行跨平台移动开发框架之一。通常,我们有开发人员询问如何将 Link-OS SDK 与 React Native 应用程序集成,以便在 Zebra 打印机上打印标签。在本教程中,我们将…...

使用 Simulink 进行 STM32 编程
目录 介绍 所需材料 步骤 1:在MATLAB中设置STM32-MAT软件路径步骤 2:在STM32CubeMX中创建一个项目步骤 3:配置时钟和 GPIO 引脚步骤 4:项目经理并生成代码步骤 5:在 Simulink 中创建模型步骤 6:在模型中插…...
走出迷宫的最少步数and第一条出路
题面 题目描述 一个迷宫由 R 行 C 列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。 给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,…...
MediaCodec创建对应解码器
媒体编解码API使用示例 //获取相关格式文件的内容信息,如轨道数量、获取MIME信息、视频的高度与宽度、语言格式、播放总时长等 MediaExtractor mediaExtractor new MediaExtractor(); try {mediaExtractor.setDataSource(path); // 设置数据源 } catch (IOExcept…...

使用eXosip+ffmpeg、ffplay命令行实现sip客户端
文章目录 前言一、关键实现1、主要流程2、解决端口冲突(1)、出现原因(2)、解决方法 3、解析sdp(1)、定义实体(2)、解析视频(3)、解析音频 4、命令行推拉流&am…...

dotNet 之网络TCP
**硬件支持型号 点击 查看 硬件支持 详情** DTU701 产品详情 DTU702 产品详情 DTU801 产品详情 DTU802 产品详情 DTU902 产品详情 G5501 产品详情 ARM dotnet 编程 dotNet使用TCP,可以使用Socket和TcpClient 、TcpListener类 2种,对于高级用户&…...
python基础面试题汇总(持续更新),冲击offer
目录 1.概念理解题python内置数据结构,哪些是不可变的python新式类和经典类的区别is和有什么区别Python中变量查找顺序python函数的参数是值传递还是引用传递python垃圾回收机制什么是闭包什么是装饰器,开发中用到举例如何实现只读属性Python中类方法、实…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...