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

news2024/9/21 16:41:56

目录

 一、实验

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

 

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

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

相关文章

事物

概述&#xff1a; 数据库的事务&#xff08;Transaction&#xff09;是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令。 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么同时成功&#xff0c;要么同时失败。 事…

大模型量化技术原理-ZeroQuant系列

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;从而导致模型变得越来越大&#xff0c;因此&#xff0c;我们需要一些大模型压缩技术来降低模型部署的成本&#xff0c;并提升模型的推理性能。 模型压缩主要分…

神经网络系列---卷积

文章目录 卷积神经网络卷积转置卷积 卷积核和反卷积的三种实现方式卷积的次数计算 卷积神经网络 在神经网络的卷积层中&#xff0c;向下取整&#xff08;Floor&#xff09;是一种常用的策略&#xff0c;特别是在处理输出尺寸不是整数的情况时。当你计算出卷积层输出的尺寸&…

回溯例题(leetcode17/37)

文章目录 leetcode37leetcode17 回溯跟枚举差不多。要注意“回溯”&#xff0c;别忘记“回”之前把之前的改动都复原。 leetcode37 leetcode37是解数独问题。本题保证有且仅有唯一解。 思路&#xff1a;先把空格子的位置存下来&#xff0c;然后对每一个空位置挨个枚举1-9。枚…

Vue2:用node+express部署Vue项目

一、编译项目 命令 npm run build执行命令后&#xff0c;我们会在项目文件夹中看到如下生成的文件 二、部署Vue项目 接上一篇&#xff0c;nodeexpress编写轻量级服务 1、在demo中创建static文件夹 2、将dist目录中的文件放入static中 3、修改server.js文件 关键配置&…

小红书关键词爬虫

标题 1 统计要收集的关键词&#xff0c;制作一个文件夹2 爬取每一页的内容3 爬取标题和内容4 如果内容可以被查看&#xff0c;爬取评论内容5 将结果进行汇总&#xff0c;并且每个帖子保存为一个json文件&#xff0c;具体内容6 总结 1 统计要收集的关键词&#xff0c;制作一个文…

【白嫖8k买的机构vip教程】Appium自动化(3):Appium-Desktop界面介绍

Appium-Desktop主界面包含三个菜单Simple、Advanced、Presets Simple界面&#xff1a; Host设置Appium server的ip地址&#xff0c;本地调试可以将ip地址修改为127.0.0.1&#xff1b;Port设置端口号&#xff0c;默认是4723不用修改Start Server 启动 Appium serverEdit Confi…

优思学院|质量工程师需要学习什么软件?

初入职质量工程师的朋友常常会问&#xff1a;质量工程师需要学习什么软件&#xff1f;在质量控制和管理的世界里&#xff0c;拥有强大的数据分析工具是走向成功的关键&#xff0c;因此&#xff0c;对于质量工程师来说&#xff0c;掌握正确的软件不仅能提升工作效率&#xff0c;…

多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测

多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网…

深度学习-神经网络原理

文章目录 神经网络原理1.单层神经网络1.1 回归单层神经网络&#xff1a;线性回归1.2 二分类单层神经网络&#xff1a;sigmoid与阶跃函数 1.3 多分类单层神经网络&#xff1a;softmax回归 神经网络原理 人工神经网络&#xff08;Artificial Neural Network&#xff0c;ANN&…

Java ElasticSearch-Linux面试题

Java ElasticSearch-Linux面试题 前言1、守护线程的作用&#xff1f;2、链路追踪Skywalking用过吗&#xff1f;3、你对G1收集器了解吗&#xff1f;4、你们项目用的什么垃圾收集器&#xff1f;5、内存溢出和内存泄露的区别&#xff1f;6、什么是Spring Cloud Bus&#xff1f;7、…

【零基础SRC】成为漏洞赏金猎人的第一课:加入玲珑安全漏洞挖掘班。

我们是谁 你是否对漏洞挖掘充满好奇&#xff1f;零基础或有基础但想更进一步&#xff1f;想赚取可观的漏洞赏金让自己有更大的自由度&#xff1f; 那么&#xff0c;不妨了解下我们《玲珑安全团队》。 玲珑安全团队&#xff0c;拥有多名实力讲师&#xff0c;均就职于互联网头…

【比较mybatis、lazy、sqltoy、mybatis-flex操作数据】操作批量新增、分页查询(二)

orm框架使用性能比较 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0比较mybatis、lazy、sqltoy、mybatis-flex操作数据 测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.4-JDK17-SNAPS…

仿牛客网项目---帖子详情功能的实现

这篇文章主要讲讲帖子详情功能。其实帖子详情功能简单来说就是你点进去可以看到文章&#xff0c;这就叫帖子详情功能。那接下来我讲讲我的这个项目是如何实现这个功能的。 首先写DAO层。 Mapper public interface DiscussPostMapper {List<DiscussPost> selectDiscussPo…

【Unity】在Unity中导出WebGL并读取Excel数据的实现方法

在游戏开发中&#xff0c;数据的处理和导出是至关重要的环节之一。Unity作为一款强大的游戏开发引擎&#xff0c;提供了丰富的工具和功能来处理和导出数据&#xff0c;包括将游戏导出为WebGL应用&#xff0c;并读取外部数据文件&#xff0c;比如Excel表格。本文将介绍如何在Uni…

Navicat Premium 16:打破数据库界限,实现高效管理mac/win版

Navicat Premium 16是一款功能强大的数据库管理工具&#xff0c;旨在帮助用户更轻松地连接、管理和保护各种数据库。该软件支持多种数据库系统&#xff0c;如MySQL、Oracle、SQL Server、PostgreSQL等&#xff0c;并提供了直观的图形界面&#xff0c;使用户能够轻松地完成各种数…

计算机网络_2.2物理层下面的传输媒体

2.2物理层下面的传输媒体 一、传输媒体的分类二、导向型传输媒体1、同轴电缆2、双绞线3、光纤&#xff08;1&#xff09;光纤通信原理&#xff08;2&#xff09;光纤组成&#xff08;4&#xff09;多模光纤与单模光纤对比&#xff08;5&#xff09;光纤的波长与规格&#xff08…

WSL2部署RV1126 SDK编译环境

1 下载RV1126 SDK 在 Firefly | 让科技更简单&#xff0c;让生活更智能 下载REPO_SDK 这里将SDK下载到了F:\SDK 2 解压SDK到WSL2 tar -xvf /mnt/f/SDK/rv1126_rv1109_linux_release_20211022.tgz 3 编译依赖安装 gcc、g版本依赖安装 sudo apt-get install lib32gcc-7-dev g-7 l…

【center-loss 中心损失函数】 原理及程序解释(更新中)

文章目录 前言问题引出open-set问题抛出 解决方法softmax函数、softmax-loss函数解决代码&#xff08;center_loss.py&#xff09;原理程序解释 代码运用 如何梯度更新首先了解一下基本的梯度下降算法然后 补充&#xff1a;外围知识模型 前言 学习一下&#xff1a; 中心损失函…

你真的了解C语言中的【柔性数组】吗~

柔性数组 1. 什么是柔性数组2. 柔性数组的特点3. 柔性数组的使用4. 柔性数组的优势 1. 什么是柔性数组 也许你从来没有听说过柔性数组这个概念&#xff0c;但是它确实是存在的。 C99中&#xff0c;结构体中的最后⼀个元素允许是未知大小的数组&#xff0c;这就叫做柔性数组成员…