华为云云容器快速搭建网站实践随记—利用私有镜像搭建GuestBook

news/2024/5/12 12:35:37/文章来源:https://blog.csdn.net/weixin_37896608/article/details/91881724

一、华为云云容器简单介绍:

云容器引擎 CCE 是基于 K8S 和 Docker 的企业级容器服务,为企业应用提供快速部署、自动化运维、弹性伸缩等容器生命周期管理能力。


这个实践是通过 docker 容器以及云容器引擎 CCE 平台快速实现了网站搭建,体验到容器为企业应用所带来的极大的便利性。

而网站建站是一个IT从业人员的基本功,所以通过本篇文章,利用私有镜像搭建GuestBook说明借助华为云等云生态资源,进行快速、高效的实践,大家可以对比体会下,如果是采用CES单购、自建容器或采用自有服务器搭建的性价比之分,个人觉得,差别还是很大的,如果我们能把原本需要2天的时间缩短到2个小时,那么即使付出几百块钱的成本也是值得的。

 

二、下面对具体实践步骤进行分享说明:

实践的大致内容说明如下:

在安装好 docker 环境的虚拟机中制作 Guestbook 的三个镜像:frontend, redis 和 redisslave,并
上传到云容器引擎 CCE 的镜像仓库中,通过私有镜像发布容器服务,搭建 Guestbook 留言簿。

1、创建弹性云服务器 ECS

注册登录后,在页面的左上方点击【服务列表】,从显示的服务中选择【计算】-【弹性云服务器ECS】

点击后进入弹性云服务器购买页面:

按需计费,华北-北京一,可用区1,通用计算型1核1G,公共镜像 ubantu 16.04,带宽1G,确定后点击【立即购买】

勾选同意,然后点击提交,等待创建,然后 返回云服务器控制台,等待片刻后,可查看到已创建好的弹性云服务器。记录下弹性 IP 地址,以作后续登陆使用。此处如我的是 114.xx.xxx.7

2、安装 docker 客户端

 打开 putty,输入弹性云服务器 ECS 的弹性 IP 地址,单击“open”。如下图所示:

最好是保存会话,再次打开的话,就可以直接双击,点击【打开】后会进入DOC命令框,输入root和购买时设置的密码,出现如下画面,则表示已经登录成功:

使用如下命令快速安装 Docker。
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh

安装后,使用docker version 或docker info 查看版本及安装信息,如下图所示:

docker info 可自行尝试

3、制作 Guestbook 镜像

制作 Guestbook 镜像中,需要制作三个镜像:frontend 作为前端网页服务镜像,代码逻辑全在
Frontend 组件内,redis 和 redisslave 负责存储,互为主备

(1)制作 Frontend 组件镜像

 《1》执行如下命令,新建用于存放 frontend 组件文件的目录。
mkdir guestbook
cd guestbook
mkdir frontend
cd frontend

如下图所示:

 《2》执行如下命令,新建 guestbook.php 文件。并复制代码到 guestbook.php 文件中。
vi guestbook.php
guestbook.php  文件 的 代码 内容如下:

<?php
set_include_path('.:/usr/local/lib/php');
error_reporting(E_ALL);
ini_set('display_errors',1);
require 'Predis/Autoloader.php';
Predis\Autoloader::register();
if (isset($_GET['cmd'])===true){
$host = 'redis-master';
header('Content-Type: application/json');
if ($_GET['cmd']=='set'){
$client = new Predis\Client([
'scheme' => 'tcp',
'host' => $host,
'port' => 6379,
]);
$client->set($_GET['key'],$_GET['value']);
print('{"message": "Updated"}');
}
else {
$host = 'redis-slave';
$client = new Predis\Client ([
'scheme' => 'tcp',
'host' => $host,
'port' => 6379,
]);
$value = $client->get($_GET['key']);
print('{"data": "' . $value . '"}');
}
} else {
phpinfo();
} ?>

注意:复制上述代码的时候,检查头和尾,以确保完整,如若缺失头的部分,则把光标先移动至最头部第一个字符,然后复制缺失的部分,粘贴

复制完成后,检查无误,则ESC退出输入,SHIFT+冒号,然后输入  wq,保存后退出文件

 

 《3》执行如下命令,新建 controllers.js 文件。并复制代码到 controllers.js 文件中。
vi controllers.js
controllers.js  文件 的 代码 内容如下 :

var redisApp = angular.module('redis',['ui.bootstrap']);
/**
*Constructor
*/
function RedisController() {}
RedisController.prototype.onRedis = function() {
this.scope_.messages.push(this.scope_.msg);
this.scope_.msg = "";
var value = this.scope_.messages.join();
this.http_.get("guestbook.php?cmd=set&key=messages&value=" + value)
.success(angular.bind(this, function(data) {
this.scope_.redisResponse = "Updated.";
}));
};
redisApp.controller('RedisCtrl',function($scope, $http, $location) {
$scope.controller = new RedisController();
$scope.controller.scope_= $scope;
$scope.controller.location_= $location;
$scope.controller.http_= $http;
$scope.controller.http_.get("guestbook.php?cmd=get&key=messages")
.success(function(data) {
console.log(data);
$scope.messages =data.data.split(",");
});
});

复制完成后,检查无误,则ESC退出输入,SHIFT+冒号,然后输入  wq,保存后退出文件

 

《4》执行如下命令,新建 index.html 文件。并复制代码到 index.html 文件中。
vi index.html
index.html  文件 的 代码 内容如下 

 

<html ng-app="redis" >
<head>
<title>Guestbook</title>
<link rel="stylesheet"
href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css?t=1023">
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></scr
ipt>
<script src="controllers.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-
bootstrap/0.13.0/ui-bootstrap-tpls.js"></script>
</head>
<body ng-controller="RedisCtrl">
<div style="width: 50%; margin-left: 20px">
<h2>Guestbook</h2>
<form>
<fieldset>
<input ng-model="msg" placeholder="Messages" class="form-control"
type="text" name="input"><br>
<button type="button" class="btn btn-primary" ng-
click="controller.onRedis()">Submit</button>
</fieldset>
</form>
<div>
<div ng-repeat="msg in mesages track by $index">
{{msg}}
</div>
</div>
</div>
</body>
</html>

复制完成后,检查无误,则ESC退出输入,SHIFT+冒号,然后输入  wq,保存后退出文件

《5》通过 ls 命令可以查询到“frontend”目录下已创建好的三个文件。

《6》在当前 frontend 目录下,编写 Dockerfile 文件构建 frontend 镜像。
vi Dockerfile

Dockerfile  文件 代码内容如下:


FROM php:5-apache
RUN apt-get update
RUN pear channel-discover pear.nrk.io
RUN pear install nrk/Predis
ADD guestbook.php /var/www/html/guestbook.php
ADD controllers.js /var/www/html/controllers.js
ADD index.html /var/www/html/index.html


其中
FROM 语句:表示使用 php:5-apache 镜像作为基础。
RUN语句:表示使用 apt-get 命令来更新软件包列表和安装 Predis。
ADD语句:将本地代码文件添加到镜像中。

《7》执行如下命令制作 frontend 镜像。
docker build -t frontend .          (不要漏了最后有个点)

《8》验证成功与否:

屏幕回显信息如下,当出现“successfully built”的时候表示镜像制作成功,如下图所示:

(2)制作 redis 和 redisslave 镜像

《1》 redis 镜像通过如下命令直接从镜像仓库中获取
docker pull redis:3.0

如下图所示:

《2》返回 guestbook 目录下,创建 redisslave 文件夹

cd ..
mkdir redisslave
cd redisslave

如下图所示:

《3》编写 run.sh 文件。
vi run.sh
run.sh  文件 内容 如下 :
redis-server --slaveof redis-master 6379

如下图所示:

ESC,使用SHIFT+冒号,然后输入wq 保存并退出文档。

 

《4》在当前 redisslave 目录下,编写 redisslave 镜像的 Dockerfile 文件。
vi Dockerfile
Dockerfile  文件内容如下:
FROM redis:3.0
ADD run.sh /run.sh
RUN chmod a+x /run.sh
CMD /run.sh

ESC,使用SHIFT+冒号,然后输入wq 保存并退出文档。

 

其中:
  FROM 语句:表示基于 redis 镜像。
  ADD 语句:表示将本地的 run.sh 文件放到镜像中。
  RUN 语句:表示给所有用户写的 run.sh 赋予可执行权限。
  CMD 语句:表示容器启动后自动运行 run.sh 脚本。

 

《5》执行如下命令,制作 redisslave 的镜像。
docker build -t redisslave .        (不要漏了最后有个点)

屏幕回显信息如下,当出现“successfully built”的时候表示镜像制作成功

如下图所示:

《6》 执行 docker images 命令,可以查看到已经制作好的 guestbook 的三个镜像。如下图所示:

4、连接华为云私有镜像仓库并上传镜像

(1)页面左上角,点击【服务列表】,从服务页面中,选择“云容器引擎 CCE”服务,进入云容器引擎页面

(2)进入到云容器引擎控制台后,进入【镜像仓库】。

 (3)在容器镜像服务中,选择【组织管理】 创建组织。
为组织定义一个名称,注意此处名称全局唯一,名称可能已被他人占用,请设置一个唯一的名
称。(此处以 rongzhen 为例)

(4)组织创建成功后,进入“我的镜像”,单击“客户端上传”。点击弹出对话框中的“生成
临时 docker login 指令”

(5)用 putty 打开 ECS,粘贴 docker login 指令。回显如下:

当显示“Login Succeeded”时,已成功连接到镜像仓库。

(6)成功连接镜像仓库后,执行 docker images 命令,查看到已制作好的三个镜像以及镜像的版
本(TAG),现在需要对这三个镜像打上新的标签,然后推送到镜像仓库中。

(7)首先为 frontend 镜像打上标签并推送 frontend 镜像到镜像仓库。

docker tag [{镜像名称}:{版本名称}] swr.cn-north-1.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本
名称}
docker push swr.cn-north-1.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
  {镜像名称}:frontend
  {版本名称}:latest
  {组织名称}:rongzhen(上述步骤中创建的组织名称)
此处示例为:
docker tag frontend:latest swr.cn-north-1.myhuaweicloud.com/rongzhen/frontend:latest
docker push swr.cn-north-1.myhuaweicloud.com/rongzhen/frontend:latest
回显如下:

(8)按照同样的方式,为 redis 和 redisslave 镜像打上标签并推送到镜像仓库。

redis:

docker tag redis:3.0 swr.cn-north-1.myhuaweicloud.com/rongzhen/redis:3.0
docker push swr.cn-north-1.myhuaweicloud.com/rongzhen/redis:3.0

redisslave:

docker tag redisslave:latest swr.cn-north-1.myhuaweicloud.com/rongzhen/redisslave:latest
docker push swr.cn-north-1.myhuaweicloud.com/rongzhen/redisslave:latest

在执行redis:3.0时,如果复制不行,就直接照着手打一遍,应该就可以,复制的过程中会有一些字符出现非正常显示

全部执行完毕后,到【容器镜像服务】-【我的镜像】中查看是否上传成功

 

5、创建 guestbook 容器工作负载

为已经上传的 guestbook 三个镜像创建容器工作负载,因为三个工作负载有相关性,需要按照
顺序进行创建:1.redis;2.redisslave;3.frontend。

集群的创建可查看另外一篇文章:

https://blog.csdn.net/weixin_37896608/article/details/91881053

作为操作的参照

此处直接使用之前的集群test,并使用我的镜像进行私有镜像创建无状态工作负载

 

(1)进入到云容器引擎控制台,打开【工作负载】界面,点击【创建无状态工作负载】。如下图所示:

(2) 创建 redis 工作负载,填写工作负载基本信息,参数参考如下:
  工作负载名称:redis
  集群名称:选择已创建的集群,如 test
  命名空间:default
  实例数量:1

点击【下一步】后,进入如下页面,添加容器,并选择镜像,此处选择【我的镜像】,此处有两个redis,选择3.0的,因为这个是我们上述步骤中生成的,选择后,点击【确定】

容器配置页面,使用默认,点击【下一步】,进入添加服务页面

添加 redis-master 服务,设置参数参考如下:
  服务名称:redis-master(此处名称与 guestbook.php 中服务名称保持一致)
  访问方式:集群内访问
  端口映射:协议-TCP;容器端口-6379;访问端口-6379(此处端口号与 guestbook.php
中端口号保持一致)

如下图所示:


单击【确定】后,点击 【下一步】,高级设置页面保持默认,点击【创建】,返回无状态工作负载列表

(3)以同样的方式创建 redisslave 工作负载,添加容器中选择 redisslave 镜像。添加服务中
设置服务名称为“redis-slave”,容器端口与访问端口均为“6379”

注意修改工作负载名称和实例数量,选择镜像时,注意区分,其他的均可采用默认

(4)返回云容器引擎界面,继续创建 guestbook 无状态工作负载。

需要特别注意的是,在添加服务时,按以下步骤操作:

添加 guestbook 服务,设置参数如下:
  服务名称:guestbook
  访问类型:负载均衡
  服务亲和:集群级别 
  端口映射:协议-TCP,容器端口-80,访问端口-80

如下图所示:点击【确定】,然后点击【下一步】

其他的配置通其他操作,以上操作完毕后,返回工作负载列表,进行查看,如下图所示:

6、访问 guestbook 应用

通过 guestbook 工作负载的外部访问地址,打开浏览器进行访问,如下图所示:

至此 Guestbook 网站搭建完毕。

 

有兴趣的可以注册华为云账号,然后到华为云学院的微认证中进行学习和实践,相信能收获不少,以下是相关链接:

https://edu.huaweicloud.com/certifications/

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

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

相关文章

资源 | 想进行数据科学项目却没有数据集?26个数据集网站汇总

导读&#xff1a;如果用一个句子总结学习数据科学的本质&#xff0c;那就是&#xff1a;学习数据科学的最佳方法就是应用数据科学。如果你是初学者&#xff0c;那么每完成一个项目你的能力就会大大提高。如果你是有经验的数据科学从业者&#xff0c;那么你应该懂这个道理。但是…

这11个免费学习的网站,个个堪称神器,不收后悔!

导读&#xff1a;神奇的网站有很多&#xff0c;今天推荐11个和学习有关的&#xff0c;而且都是免费的&#xff0c;希望对大家有所帮助。01 Ruby regular expression editor正则表达式编辑器rubular.com正则表达式太复杂了总也写不对?Rubular是一个Ruby-based的正则 表达式在线…

开源小程序CMS网站, JeeWx-App-CMS 1.0 首版本发布

JeeWx-App-CMS 是jeewx开发的小程序网站开源项目&#xff0c;基于小程序wepy语言&#xff0c;具备cms网站的基本功能&#xff0c;能够打造简单易用的小程序公司官网。项目结构简单&#xff0c;逻辑清晰&#xff0c;代码规范&#xff0c;非常适合作为小程序开发的入门项目。 当前…

JEECG-P3首个开源插件诞生!CMS网站插件 Jeecg-p3-biz-cms1.0版本发布!

Jeecg-P3-Biz-Cms &#xff08; JEECG 首个微服务插件&#xff0c;支持小程序的CMS系统&#xff09;是基于JEECG-P3 微服务框架开发的CMS建站系统&#xff0c;可轻量级集成进jeecg系统&#xff0c;定制各类网站模板&#xff0c;维护网站的广告、栏目、文章内容&#xff0c;让…

开源小程序CMS网站,JeeWx-App-CMS 持续更新ing~

JeeWx-App-CMS开源小程序CMS网站&#xff0c;持续更新ing~ JeeWx-App-CMS 是jeewx开发的小程序网站开源项目&#xff0c;基于小程序wepy语言&#xff0c;具备cms网站的基本功能&#xff0c;能够打造简单易用的小程序公司官网。项目结构简单&#xff0c;逻辑清晰&#xff0c;代…

入侵网站的黑客被我抓到了!

转自&#xff1a;小白学黑客今天在知乎看到一个提问&#xff1a;在下面回答区&#xff0c;我看到网友分享的真实案例&#xff0c;大家可以看一下&#xff0c;顺便了解一下网络溯源是怎么一回事&#xff0c;也给大家一些启示。我朋友在创业&#xff0c;听说他公司被人搞了&#…

一群参与境内外赌博网站的开发的程序员被抓,网友:切勿面向监狱编程...

近期&#xff0c;广州警方侦破一宗为赌博团伙提供黑灰产业链支撑帮助信息网络犯罪活动专案&#xff0c;抓获嫌疑人91名。据悉&#xff0c;该案是广州市近年来打击跨境网络赌博生态犯罪中&#xff0c;涉及黑灰产环节最多、地域跨度最广、链条最完整的案件。今年1月&#xff0c;从…

phpcms网站搬家至服务器

phpcms网站搬家至服务器 想要自己的网站让人们看到那就要上传服务器空间后&#xff0c;这样才会通过搜索域名进行网页访问。 但是在上传的过程中肯定会有很多东西要修改&#xff0c;例如数据库怎么上传、路径怎么修改等。。。。。这些对于生手可能会慌乱&#xff0c;不用害怕&a…

故宫首开夜场门票秒空官网崩溃:7本书让网站挺住

导读&#xff1a;明天就是元宵节了&#xff0c;先祝大家节日快乐&#xff0c;阖家幸福&#xff01; 相信你已经了解到了&#xff0c;今年元宵节你有一个新“过法”&#xff0c;那就是——夜游故宫&#xff01;这是故宫94年来首开夜场&#xff0c;而且免费&#xff01; 但是&…

网站扛住 100 亿次请求?我们来压测试一试

来源&#xff1a;http://mtw.so/63aU0y1. 前言2. 背景知识3. 确定目标4. 基础软件和硬件5. 技术分析和实现6. 代码实现及分析7. 实践8. 分析数据总结1. 前言 前几天&#xff0c;偶然看到了 《扛住100亿次请求——如何做一个“有把握”的春晚红包系统”》&#xff08;url&#x…

SugarHosts糖果主机香港虚拟主机cPanel面板建站入门推荐

SugarHosts&#xff0c;又称糖果主机。从2009年开始就推出虚拟主机业务&#xff0c;在当下大部分虚拟主机商都被收购、关闭、丢弃的时候&#xff0c;SugarHosts商家一直在稳定发展。可以说目前如果需要选择海外虚拟主机商家&#xff0c;糖果主机SugarHosts是必选择商家之一&…

Apple商业网站封锁Firefox浏览器

Hollis的新书限时折扣中&#xff0c;一本深入讲解Java基础的干货笔记&#xff01;出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;据外媒 Ghacks 报道&#xff0c;用户在 Mozilla Firefox 浏览器中打开 Apple 的商业网站 business.apple.com 时&#xff…

建站用什么cms_我想做独立站,我应该用什么建站工具?

听说现在独立站很火&#xff0c;我想做独立站&#xff0c;但是上网一搜&#xff0c;五花八门&#xff0c;我该使用什么建站&#xff1f;那么我今天在这里给大家介绍一下使用过的建站工具&#xff0c;分别有什么区别&#xff1f;到目前为止&#xff0c;我使用过的建站工具有Mage…

气数已尽!运营 23 年,昔日“国内第一大电商网站”黄了。。。

Hollis的新书限时折扣中&#xff0c;一本深入讲解Java基础的干货笔记&#xff01;7月23日消息&#xff0c;电商网站易趣网络平台发布了关闭公告&#xff0c;决定停止易趣网络平台运营&#xff0c;关闭易趣网站。2022年8月12日24:00&#xff0c;易趣网将关闭网站所有商品、商铺的…

原始数据哪里找?这些网站要用好!200个国内外数据网站大全

导读&#xff1a;资料搜集是个相当繁琐与累的工作&#xff0c;也是数据分析入门的基本&#xff0c;良好的信息资料搜集能力有利于我们快速了解基本情况&#xff0c;为后续的调研及一手资料的获得打下较好的基础。作者&#xff1a;王术&#xff0c;发表于知乎来源&#xff1a;ht…

制作钓鱼网站(克隆网站)

克隆网站主要指模仿相关网页的页面格式,自己制作页面颜色、标识均与原网站视觉效果相同,且域名差别不大,被用于谋取利益的非法网站。 利用social-enginner-toolkit(set)可制作多种钓鱼网站,下面是其中一种:获取用户凭证信息的网站。 准备:kali linux(IP192.168.xx…

婚恋交友网站比相亲更靠谱!幸福婚姻算法了解一下

导读&#xff1a;算法真的能帮助你找到灵魂伴侣吗&#xff1f;当你访问OKCupid时&#xff0c;会看到一条带着些许骄傲情绪的标题——“我们用数学为你找到约会对象”。作者&#xff1a;马库斯杜索托伊&#xff08;Marcus du Sautoy&#xff09;来源&#xff1a;大数据DT&#x…

QT TextEdit设置背景、明文加密、弹出网站、弹出自定义对话框、gif动态图片、程序启动动画、打包程序、关闭事件

TextEdit设置背景 前提必须已添加了资源图片 铭文加密 ui->passLineEdit->setEchoMode(QLineEdit::Password); 弹出网站 #include <QUrl> #include <QDesktopServices> //用于访问桌面服务的类QDesktopService::openUrl(QUrl("http://www.zhaoyun.co…

使用基本MVC2模式创建新闻网站

一、项目目录 二、运行结果 登陆 显示新闻 编辑 查看 删除id为3的新闻 添加 三、链接 链接&#xff1a;https://pan.baidu.com/s/1DpLMoYOfaXmRcvDGWs5L9Q 提取码&#xff1a;g8ce 转载于:https://www.cnblogs.com/lzc396732672/p/10886088.html

chrome浏览器开发者工具F12中某网站的sources下的源码如何批量保存?

目录 chrome浏览器 开发者工具F12中某网站的sources下的源码如何批量保存1. 常用保存Sources源码的两种方法1.1单个文件1.2 单个页面2. 问题3.解决方案chrome浏览器 开发者工具F12中某网站的sources下的源码如何批量保存 1. 常用保存Sources源码的两种方法 1.1单个文件 可以直接…