Docker容器与虚拟化技术:OpenEuler 使用 docker-compose 部署 LNMP

目录

 一、实验

1.环境

2.OpenEuler 部署 docker-compose

3.docker-compose 部署 LNMP

二、问题

1.ntpdate未找到命令

2.timedatectl 如何设置时区与时间同步

3.php网页显示时区不对


 

 

 一、实验

1.环境

(1)主机

表1  主机

系统架构版本IP备注
LinuxopenEuler22.03 LTS SP2

192.168.204.144(动态)

192.168.204.141(静态)

192.168.204.142(静态)

 

 docker25.0.3  
 docker-compose2.24.6  

(2)查看系统版本

[root@localhost ~]# cat /etc/os-release

e4d8bd1e19174f7ebec18a7c53fb3c2a.png

(3) 查看网络ip

[root@localhost ~]# ip addr

d78e9538efb44978898b7c27f1d7e222.png

(4) 查看docker版本

[root@localhost ~]# docker --version

d00ab0ec09264683a2035688aee10fcd.png

(5)查看docker进程

[root@localhost ~]# docker ps

309f51314e7e4dfab8472d60427f47c1.png

(6)查看端口

80 、3306、9000端口被docker容器占用

[root@localhost ~]# netstat -antlp

8742c53d1f0249649cead03b751f80fa.png

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

46c090b2420a4d1086b3df2359e061bd.png

(7)删除所有容器

[root@localhost ~]# docker rm -f $(docker ps -aq)

2154460fe31c4853b8c656f45b417b6f.png

再次查看

[root@localhost ~]# docker ps

4c4b4eea8c4b49dbb9f8888b42786362.png

 

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

71d16c0e713a4dfc9c4d474862da0dd7.png

(4)查看版本

[root@localhost ~]# docker-compose version

771de0f9812f4edba476aa2eb6d96d1e.png

 

3.docker-compose 部署 LNMP

(1)查看docker镜像

[root@localhost ~]# docker images

f449a55cbf974ec983cf799bd66a4654.png

(2)创建挂载目录


[root@localhost ~]# mkdir -p /docker/mysql/db /docker/www /docker/nginx/conf.d

[root@localhost ~]# cd /docker/ ; ls

40662f67ce6741efb198eac3d883bd62.png

(3)编辑配置文件

[root@localhost docker]# vim /docker/docker-compose.yml

dc832451850349f68e4981041d200226.png

version: "3.9"
services:
  mysql:
    restart: always
    image: mysql:8.0.35
    container_name: mysql
    command:
      --default-authentication-plugin=mysql_native_password
      --default-time-zone=+08:00
    environment:
      TZ: PRC
      MYSQL_ROOT_PASSWORD: Root_321
    ports:
      - "3306:3306"
    volumes:
      - /docker/mysql/db:/var/lib/mysql

  php-fpm:
    restart: always
    image: bitnami/php-fpm
    container_name: php-fpm
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /docker/www:/usr/share/nginx/html
    depends_on:
      - mysql

  nginx:
    image: nginx:latest
    restart: always
    container_name: nginx
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 80:80
      - 443:443
    volumes:
      - /docker/nginx/conf.d/:/etc/nginx/conf.d
      - /docker/www:/usr/share/nginx/html
    depends_on:
      - php-fpm
~

10790c4a202347e4b9480c77ea1deeb3.png

(3)查看目录

[root@localhost docker]# ls
docker-compose.yml  mysql  nginx  www

bfdc879d658c46688b3df513fb70d21e.png

(4)添加nginx配置文件

[root@localhost docker]# cd nginx/conf.d/
[root@localhost conf.d]# ls
[root@localhost conf.d]# vim default.conf

33980d6e75f4429c8b76c1754097ef3a.png

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;
    }
 }

4598357e8e7d4a5aad47d58bfae996ca.png

(5)查看目录

[root@localhost docker]# tree /docker

3efaba2f6d524577bd4f9b3a92002885.png

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

ed72ad801278427b87310e02d66ecd98.png

(6)运行

-d 在后台运行容器,没有提示信息

[root@localhost docker]# docker-compose up -d

1eba717052b240e0951b97e2666211e8.png

(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

de3a88914dee4ab495b20946780658c1.png

(8)访问

http://192.168.204.141

目前为空

189bb354788841c680676c47c61bdcde.png

(9)创建index.php

[root@localhost docker]# cd www/
[root@localhost www]# ls
[root@localhost www]# vim index.php

dd2fc44753fe48dea86ac5cb71dda661.png

<?php
phpinfo();

4ee592c9056846ec8fd9e37117de92d6.png

(10)再次访问

http://192.168.204.141

7ebfbfd03a4a4ad09c95a9f19646518e.png

(11)创建数据库连接db.php

[root@localhost www]# sudo vim /docker/www/db.php

2eb32c355d1a42209ee2dc03a06ac0ff.png

<?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>';
}

b5e5d372ca594f5f8687a9cdbbcffcc7.png

(12) 访问

http://192.168.204.141/db.php

a8a32b2197984227858459f43f49ac1f.png

(13)删除项目

[root@localhost docker]# docker-compose rm -f -s

c2b03a154a0a49ccb00bf48efbebe71b.png

(14)查看进程

目前为空

[root@localhost docker]# docker ps

4b32b87f1dea4ce8a8cfb27721cc7a9b.png

 

二、问题

1.ntpdate未找到命令

(1)报错

-bash: ntpdate:未找到命令

01527d0e664c4141b1e3a9e538791f0f.png

(2)原因分析

未安装ntp

(3)解决方法

[root@localhost www]# dnf install ntp -y

537cdd8778014b3588d45c70a41567be.png

成功:

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

17ed09a8c1824a818c4d34764128d027.png

 

2.timedatectl 如何设置时区与时间同步

(1)设置时区

#设置时区
[root@localhost www]# timedatectl set-timezone Asia/Shanghai

#查看
[root@localhost www]# timedatectl

722c15f690f2474b94bc9588d2dcb35b.png

(2)设置时间同步

#开启同步
[root@localhost www]# timedatectl set-ntp true

#关闭同步
[root@localhost www]# timedatectl set-ntp false

#查看
[root@localhost www]# timedatectl

bc4984720b0841179febdb360f239ffc.png

 

3.php网页显示时区不对

(1)报错

f070438620564d2c9d68f2e8efd2958f.png

(2)原因分析

php文件未设置时区

(3)解决方法

修改db.php文件

添加如需代码:

date_default_timezone_set("PRC");

277b8bdb7c3c47bf980aad6adc3fd255.png

成功:

a8a32b2197984227858459f43f49ac1f.png

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio:指针和固定大小缓冲区只能在不安全的上下文中使用、 设置允许使用不安全代码(unsafe)

问题描述: 指针和固定大小缓冲区只能在不安全的上下文中使用 解决方案&#xff1a; 1、解决方案资源管理器-》选择项目-》右键-》属性 2、在生成窗口中&#xff0c;勾选“允许不安全代码” 3、再次“生成解决方案”即可

C语言基础17 判断

断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 C 语言把任何非零和非空的值假定为 true&#xff0c;把零或 null 假定为 false。 下面是…

免费百度快速收录软件

在网站SEO的过程中&#xff0c;不断更新网站内容是提升排名和吸引流量的关键之一。而对于大多数网站管理员来说&#xff0c;频繁手动更新文章并进行SEO优化可能会是一项繁琐且耗时的任务。针对这一问题&#xff0c;百度自动更新文章SEO工具应运而生&#xff0c;它能够帮助网站管…

Maven面试题

以下是一些关于Maven的经典面试题以及它们的答案&#xff1a; 1、什么是Maven&#xff1f; Maven是一个项目管理工具&#xff0c;用于构建、管理、发布Java项目。 2、为什么要使用Maven而不是手动管理项目依赖&#xff1f; Maven提供了依赖管理、统一的构建、打包、文档生…

Unity(第二十四部)UI

在游戏开发中&#xff0c;用户界面&#xff08;UI&#xff09;是至关重要的一部分。它负责与玩家进行交互&#xff0c;提供信息&#xff0c;并增强游戏的整体体验。Unity 提供了强大的工具和功能来创建和管理 UI。 ui的底层就是画布&#xff0c;创建画布的时候会同时创建一个事…

rocketmq+rocket-dashboard win10安装部署+注册为Windows服务

1.1 首先去官网下载zip包 选择自己需要的版本 下载 | RocketMQ 1.2 、下载后&#xff0c;解压到指定目录 1.3、配置RocketMQ环境变量 注意&#xff0c;看对应的版本需要jdk版本 1.4、启动mqnameserver 进入bin目录下&#xff0c;双击启动mqnamesrv.cmd 启动后&#xff0c;…

11-Linux部署集群准备

Linux部署集群准备 介绍 在前面&#xff0c;我们所学习安装的软件&#xff0c;都是以单机模式运行的。 后续&#xff0c;我们将要学习大数据相关的软件部署&#xff0c;所以后续我们所安装的软件服务&#xff0c;大多数都是以集群化&#xff08;多台服务器共同工作&#xff…

喜报|迪捷软件入选工信部“2023年信息技术应用创新解决方案”

为进一步推进信创生态建设&#xff0c;激发产业自主创新活力&#xff0c;高效促进供需协同发展&#xff0c;加强区域联动和资源整合&#xff0c;国家工业和信息化部网络安全产业发展中心&#xff08;工业和信息化部信息中心&#xff09;联合相关单位&#xff0c;遴选了一批可复…

系统工程师面试问题,腾讯安卓开发面试

阿里面试需注意 1、面试前要做好充分的准备&#xff0c;一方面要尽可能多的搜集资料&#xff0c;对用人单位的历史、现状、规模、业务、产品、服务等方面要有所了解&#xff0c;掌握用人单位对人才的需求与使用情况&#xff1b;另一方面&#xff0c;要对照自己的实际情况&…

深入理解nginx的https alpn机制

目录 1. 概述2. alpn协议的简要理解2.1 ssl的握手过程2.2 通过抓包看一下alpn的细节3. nginx源码分析3.1 给ssl上下文设置alpn回调3.2 连接初始化3.3 处理alpn协议回调3.4 握手完成,启用http协议4.4 总结阅读姊妹篇:深入理解nginx的https alpn机制 1. 概述 应用层协议协商(…

LabVIEW非接触式电阻抗层析成像系统

LabVIEW非接触式电阻抗层析成像系统 非接触式电阻抗层析成像&#xff08;NEIT&#xff09;技术以其无辐射、非接触、响应速度快的特点&#xff0c;为实时监测提供了新的解决方案。基于LabVIEW的电阻抗层析成像系统&#xff0c;实现了数据的在线采集及实时成像&#xff0c;提高…

javaweb学习(day05-TomCat)

一、介绍 1 官方文档 地址: https://tomcat.apache.org/tomcat-8.0-doc/ 2 WEB 开发介绍 2.1 WEB 在英语中 web 表示网/网络资源(页面,图片,css,js)意思&#xff0c;它用于表示 WEB 服务器(主机)供浏览器访问的资源 2.2 Web 资源 WEB 服务器 ( 主机 ) 上供外界访问的 …

CAPL编程学习笔记--关于on 事件的详细解释

CAPL编程是比较有特色的一种面向通讯的编程语言。 1&#xff1a;on XXX类型&#xff08;即事件类型&#xff09; 维克多的官方文档对CAPL的描述是一门类C语言&#xff0c;说白了它也是用C写出来的。我们看on&#xff08;注意都是小写&#xff09;事件的代码结构 on * { }&…

Docker技术概论(2):Docker环境的搭建

Docker技术概论&#xff08;2&#xff09; Docker环境的搭建 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blo…

【Javascript编程实操03】1、根据数字显示对应的星期2、输入月份,显示当月的天数

前言 1、根据数字显示对应的星期 代码&#xff1a; 实现效果&#xff1a; 2、输入月份&#xff0c;显示当月的天数 原理&#xff1a; 代码&#xff1a; 实现效果&#xff1a; 总结 前言 本次主要是针对Javascript阶段的switch的实操练习&#xff0c;共有2个实操。 1、…

BioTech - 大分子药物设计 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136302202 大分子药物设计领域主要包括3个方面&#xff0c;即大环类药物设计、蛋白质与多肽类药物设计、核酸药物设计等&#xff0c;具体如下&…

磁盘分区配置开机自动挂载

客户提供的服务器 有1TB的磁盘需要手动挂载 首先查看一下磁盘设备 lsblk 可以看到vdb是新添加的磁盘 然后使用fdisk /dev/vdb 进行磁盘分区 新添加的磁盘只需要分一个区默认全部回车即可 然后使用lsblk查看一下磁盘设备 做好磁盘分区后需要做文件系统格式化 mkfs.ext4 /dev/vd…

SINAMICS V90 PN 指导手册 第5章 调试说明、调试 Jog、EPOS、速度调试

前几章介绍了V90 PN 系统的产品功能、技术数据、安装以及连接&#xff0c;从本章开始&#xff0c;重点介绍V90 PN的应用指导&#xff0c;本章介绍的主要内容是调试&#xff0c;包括调试说明、Jog模式下调试、基本定位器模式下(EPOS)调试以及速度模式(S)下调试。 调试说明 悬挂…

Window部署Jaeger

参考&#xff1a;windows安装使用jaeger链路追踪_windows安装jaeger-CSDN博客 下载&#xff1a;Releases jaegertracing/jaeger GitHub Jaeger – Download Jaeger 目录 1、安装nssm 2、安装运行 elasticsearch 3、安装运行 3.1部署JaegerAgent 3.2部署JaegerCollec…

Opencv实战(5)平滑处理与常见函数

平滑处理 Opencv实战&#xff1a; Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 Opencv(3)详解霍夫变换 Opencv(4)详解轮廓 文章目录 平滑处理1.均值滤波2.方框滤波3.高斯滤波4.中值滤波5.双边滤波 常见函数(1).createTrackbar()(2).SetMouseCallback() 图像的平滑处理是…