Docker容器与虚拟化技术:OpenEuler 使用 docker-compose 部署 LNMP
目录
一、实验
1.环境
2.OpenEuler 部署 docker-compose
3.docker-compose 部署 LNMP
二、问题
1.ntpdate未找到命令
2.timedatectl 如何设置时区与时间同步
3.php网页显示时区不对
一、实验
1.环境
(1)主机
表1 主机
| 系统 | 架构 | 版本 | IP | 备注 |
| Linux | openEuler | 22.03 LTS SP2 | 192.168.204.144(动态) 192.168.204.141(静态) 192.168.204.142(静态) |
|
| docker | 25.0.3 | |||
| docker-compose | 2.24.6 |
(2)查看系统版本
[root@localhost ~]# cat /etc/os-release

(3) 查看网络ip
[root@localhost ~]# ip addr

(4) 查看docker版本
[root@localhost ~]# docker --version

(5)查看docker进程
[root@localhost ~]# docker ps

(6)查看端口
80 、3306、9000端口被docker容器占用
[root@localhost ~]# netstat -antlp

[root@localhost ~]# netstat -antlp |grep docker-proxy

(7)删除所有容器
[root@localhost ~]# docker rm -f $(docker ps -aq)

再次查看
[root@localhost ~]# docker ps

2.OpenEuler 部署 docker-compose
(1) 官网
Releases · docker/compose · GitHub
(2)下载
wget https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64
(3) 移动赋权
[root@localhost ~]# sudo mv docker-compose-linux-x86_64 /usr/bin/docker-compose
[root@localhost ~]# sudo chmod +x /usr/bin/docker-compose

(4)查看版本
[root@localhost ~]# docker-compose version

3.docker-compose 部署 LNMP
(1)查看docker镜像
[root@localhost ~]# docker images

(2)创建挂载目录
[root@localhost ~]# mkdir -p /docker/mysql/db /docker/www /docker/nginx/conf.d[root@localhost ~]# cd /docker/ ; ls

(3)编辑配置文件
[root@localhost docker]# vim /docker/docker-compose.yml

version: "3.9"
services:mysql:restart: alwaysimage: mysql:8.0.35container_name: mysqlcommand:--default-authentication-plugin=mysql_native_password--default-time-zone=+08:00environment:TZ: PRCMYSQL_ROOT_PASSWORD: Root_321ports:- "3306:3306"volumes:- /docker/mysql/db:/var/lib/mysqlphp-fpm:restart: alwaysimage: bitnami/php-fpmcontainer_name: php-fpmenvironment:- TZ=Asia/Shanghaivolumes:- /docker/www:/usr/share/nginx/htmldepends_on:- mysqlnginx:image: nginx:latestrestart: alwayscontainer_name: nginxenvironment:- TZ=Asia/Shanghaiports:- 80:80- 443:443volumes:- /docker/nginx/conf.d/:/etc/nginx/conf.d- /docker/www:/usr/share/nginx/htmldepends_on:- php-fpm
~

(3)查看目录
[root@localhost docker]# ls
docker-compose.yml mysql nginx www

(4)添加nginx配置文件
[root@localhost docker]# cd nginx/conf.d/
[root@localhost conf.d]# ls
[root@localhost conf.d]# vim default.conf

server{listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm index.php;}location ~ \.php$ {root /usr/share/nginx/html;fastcgi_pass php-fpm:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param SCRIPT_NAME $fastcgi_script_name;include fastcgi_params;}}

(5)查看目录
[root@localhost docker]# tree /docker

[root@localhost docker]# tree /docker -s

(6)运行
-d 在后台运行容器,没有提示信息
[root@localhost docker]# docker-compose up -d

(7)查看进程
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0194b5301702 nginx:latest "/docker-entrypoint.…" 47 seconds ago Up 45 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
388b48d024e3 bitnami/php-fpm "php-fpm -F --pid /o…" 47 seconds ago Up 46 seconds 9000/tcp php-fpm
3250c88c5e04 mysql:8.0.35 "docker-entrypoint.s…" 47 seconds ago Up 46 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql

(8)访问
http://192.168.204.141
目前为空

(9)创建index.php
[root@localhost docker]# cd www/
[root@localhost www]# ls
[root@localhost www]# vim index.php

<?php
phpinfo();

(10)再次访问
http://192.168.204.141

(11)创建数据库连接db.php
[root@localhost www]# sudo vim /docker/www/db.php

<?php
date_default_timezone_set("PRC");
#输出php版本号
echo PHP_VERSION;
printf("<br>");
echo date('Y-m-d H:i:s');
printf("<br>");
/*循环格式化输出*/
for ($i = 1; $i <= 5; $i++) {printf("<h3>%03d</h3>", $i);
}
//---pdo 连接数据库
$dsn = 'mysql:host=mysql;dbname=mysql';
$username = 'root';
$password = 'Root_321';
try {$db = new PDO($dsn, $username, $password);// 设置错误模式为异常$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);echo "成功连接到数据库";
} catch (PDOException $e) {echo "连接数据库失败: " . $e->getMessage();
} catch (Exception $e) {echo "系统未知异常:" . $e->getMessage();
}
$st = $db->query("show databases");
while ($row = $st->fetch(3)) {echo $row[0] . '<br>';
}

(12) 访问
http://192.168.204.141/db.php

(13)删除项目
[root@localhost docker]# docker-compose rm -f -s

(14)查看进程
目前为空
[root@localhost docker]# docker ps

二、问题
1.ntpdate未找到命令
(1)报错
-bash: ntpdate:未找到命令
(2)原因分析
未安装ntp
(3)解决方法
[root@localhost www]# dnf install ntp -y

成功:
[root@localhost www]# ntpdate cn.pool.ntp.org

2.timedatectl 如何设置时区与时间同步
(1)设置时区
#设置时区
[root@localhost www]# timedatectl set-timezone Asia/Shanghai#查看
[root@localhost www]# timedatectl

(2)设置时间同步
#开启同步
[root@localhost www]# timedatectl set-ntp true#关闭同步
[root@localhost www]# timedatectl set-ntp false#查看
[root@localhost www]# timedatectl

3.php网页显示时区不对
(1)报错

(2)原因分析
php文件未设置时区
(3)解决方法
修改db.php文件
添加如需代码:
date_default_timezone_set("PRC");

成功:

相关文章:
Docker容器与虚拟化技术:OpenEuler 使用 docker-compose 部署 LNMP
目录 一、实验 1.环境 2.OpenEuler 部署 docker-compose 3.docker-compose 部署 LNMP 二、问题 1.ntpdate未找到命令 2.timedatectl 如何设置时区与时间同步 3.php网页显示时区不对 一、实验 1.环境 (1)主机 表1 主机 系统架构版本IP备注Lin…...
13-微服务初探-自研微服务框架
微服务初探 1. 架构变迁之路 1.1 单体架构 互联网早期,一般的网站应用流量较小,只需要一个应用,将所有的功能代码都部署在一起就可以,这样可以减少开发,部署和维护的成本。 比如说一个电商系统,里面包含…...
LeetCode——二叉树(Java)
二叉树 简介[简单] 144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历二叉树层序遍历[中等] 102. 二叉树的层序遍历[中等] 107. 二叉树的层序遍历 II[中等] 199. 二叉树的右视图[简单] 637. 二叉树的层平均值[中等] 429. N 叉树的层序遍历[中等] 515. 在每个…...
LDR6328芯片:智能家居时代的小家电充电革新者
在当今的智能家居时代,小家电的供电方式正变得越来越智能化和高效化。 利用PD(Power Delivery)芯片进行诱骗取电,为后端小家电提供稳定电压的技术,正逐渐成为行业的新宠。在这一领域,LDR6328芯片以其出色的…...
用node写后端环境运行时报错Port 3000 is already in use
解决方法:关闭之前运行的3000端口,操作如下 1.WindowR输入cmd确定,打开命令面板 2.查看本机端口详情 netstat -ano|findstr "3000" 3.清除3000端口 taskkill -pid 41640 -f 最后再重新npm start即可,这里要看你自己项目中package.joson的启动命令是什…...
Git 如何上传本地的所有分支
Git 如何上传本地的所有分支 比如一个本地 git 仓库里定义了两个远程分支,一个名为 origin, 一个名为 web 现在本地有一些分支是 web 远程仓库没有的分支,如何将本地所有分支都推送到 web 这个远程仓库上呢 git push web --all...
【airtest】自动化入门教程(一)AirtestIDE
目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目(web) 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目…...
ChatGPT支持下的PyTorch机器学习与深度学习技术应用
近年来,随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生,人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术,在许多行业都取得了颠覆性的成果。另外,近年来,Pytorch深度学习框架受…...
Springboot+vue的医药管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
演示视频: Springbootvue的医药管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层…...
C语言:预处理
C语言:预处理 预定义符号#define定义常量定义宏宏与函数对比 #操作符##操作符条件编译头文件包含库文件包含本地文件包含嵌套文件包含 预定义符号 C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。 __FILE__ //…...
计算机网络:路由协议
路由协议简介 路由协议是计算机网络中不可或缺的一部分,它们负责确定数据包从源地址到目的地址的最佳路径。想象一下,如果你是一个数据包,路由协议就像是地图或导航工具,指导你如何到达目的地。 目录 路由协议简介 工作原理简化…...
经典动态规划题目leetcode322. 零钱兑换
题目链接:https://leetcode.cn/problems/coin-change/description/ 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合…...
python 使用curl_cffi 绕过jax3指纹-Cloudflare 5s盾
现在越来越多的网站已经能够通过JA3或者其他指纹信息,来识别你是不是爬虫了。传统的方式比如换UA,加代理是没有任何意义了,所以这个时候我们就需要使用到curl_cffi 了。 1.TLS 指纹是啥? 在绝大多数的网站都已经使用了 HTTPS&am…...
Python3学习笔记39-passlib
passlib处理密码哈希的python包,支持很多哈希算法和工具 bcrypt 安装 pip install passlib[bcrypt] 会安装passlib包和bcrypt两个包 密码哈希与校验 from passlib.context import CryptContext# 创建CryptContext对象,指定加密算法 pwd_context CryptContext…...
Matlab 机器人工具箱 动力学
文章目录 R.dynR.fdynR.accelR.rneR.gravloadR.inertiaR.coriolisR.payload官网:Robotics Toolbox - Peter Corke R.dyn 查看动力学参数 mdl_puma560; p560.dyn;%查看puma560机械臂所有连杆的动力学参数 p560.dyn(2);%查看puma560机械臂第二连杆的动力学参数 p560.links(2)…...
Android ShellUtils手机管理器
1. Android ShellUtils手机管理器 Android Shell工具类,可用于检查系统root权限,并在shell或root用户下执行shell命令。如: checkRootPermission() 检查root权限 。execCommand(String[] commands, boolean isRoot, boolean isNeedResultMsg)…...
《梦幻西游》本人收集的34个单机版游戏,有详细的视频架设教程,值得收藏
梦幻西游这款游戏,很多人玩,喜欢研究的赶快下载吧。精心收集的34个版本。不容易啊。里面有详细的视频架设教程,可以外网呢。 《梦幻西游》本人收集的34个单机版游戏,有详细的视频架设教程,值得收藏 下载地址࿱…...
吴恩达机器学习全课程笔记第六篇
目录 前言 P96-P100 使用多个决策树 随机森林算法 XGBoost 什么时候使用决策树 P101-P107 聚类 K-means 初始化K-means 选择聚类的个数 P108-P113 异常检测算法 开发和评估异常检测系统 异常检测vs监督学习 选择要使用的特征 前言 这是吴恩达机器学习笔记的第…...
ue4.27 发现 getRandomReachedLocation 返回 false
把这个玩意儿删掉,重启工程,即可 如果还不行 保证运动物体在 volum 内部,也就是绿色范围内确保 project setting 里面的 navigation system 中 auto create navigation data 是打开的(看到过博客说关掉,不知道为啥) 如果还不行&…...
【C++ AVL树】
文章目录 AVL树AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转右单旋左单旋左右双旋右左双旋 代码实现 总结 AVL树 AVL树的概念 二叉搜索树在顺序有序或接近有序的情况下,而插入搜索树将退化为单叉树,此时查找的时间复杂度为O(n),效率低…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...

