前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云开发系列(二)—— 在容器开发一个论坛

云开发系列(二)—— 在容器开发一个论坛

作者头像
楚歌
发布2020-11-29 22:53:36
9570
发布2020-11-29 22:53:36
举报

云的底层技术,是虚拟化,云服务器主机本身就是实体服务器虚拟出来的主机(虚拟机),而容器出现则是更进一步将虚拟机的资源再次隔离开,创造多个不同的环境供给开发。而在容器中最著名的产品就是docker

docker
docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

为什么需要容器

试想以下情况:

我在我的服务器上安装了一个 PHP 5.6 ,开发了一个网站。随着时间推移版本上升,这个时候我想用laravel,PHP就要到更高版本,如果我选择升级,那么旧版本的网站可能很多都崩了,所以不能升级,可我也不希望一直用旧版本,也不想买新的服务器,那咋办呢。

这类「一个开发机的环境就一个」的问题困扰着世界上大部分的开发者,所以docker应运而生。docker可以当做一个轻量的虚拟机

云托管

云托管是cloudbase下的一个容器功能,只要我们编写好了对应的dockerfile或者使用云开发的 framework 去写代码,就可以快速的部署在容器内,还能为其配置流量、版本等等。用于跑后端服务。

用 云托管 + MongoDB 搭建一个nodebb论坛

step 1. clone 代码

首先我们先去 nodebb 的 github 找到对应的源代码下载到本地'

代码语言:javascript
复制
git clone https://github.com/NodeBB/NodeBB

step 2. 安装 mongodb

容器中本身是没有数据库的,所以需要我们还要准备一个可以远程连接的 mongodb 的数据库、

并在 admin 库中初始化一个管理员

代码语言:javascript
复制
db.createUser({
  user: "root",
  pwd: "******",
  roles: [
    {
      role: "userAdminAnyDatabase",
      db: "admin",
    },
  ],
})

step 3. 初始化配置

我们先执行 setup 命令对项目的配置进行初始化,我们将事先准备好的数据库连接串填写导下面 mongo 的相关问题处

代码语言:javascript
复制
mongodb://root:******@xxx.xxxx.xxx.xx:27017/nodebb?authSource=admin
代码语言:javascript
复制
./nodebb setup

……此处省略无关日志


Please enter a NodeBB secret (6ddbb35e-b45f-47c3-894a-1c5c220a36ec)
Would you like to submit anonymous plugin usage to nbbpm? (yes)
Which database to use (mongo)
2020-07-05T06:30:38.832Z [52985] - info:
Now configuring mongo database:
MongoDB connection URI: (leave blank if you wish to specify host, port, username/password and database individually)
Format: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] mongodb://root:******@xxx.xxxx.xxx.xx:27017/nodebb?authSource=admin

……此处省略无关日志

NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.

执行完成后会在项目的根目录下产生一个 config.json 的文件,内容如下:

代码语言:javascript
复制
{
  "url": "http://localhost:4567",
  "secret": "6ddbb35e-b45f-47c3-894a-1c5c220a36ec",
  "database": "mongo",
  "mongo": {
    "host": "127.0.0.1",
    "port": 27017,
    "username": "",
    "password": "",
    "database": "nodebb",
    "uri": "mongodb://root:******@xxx.xxxx.xxx.xx:27017/nodebb?authSource=admin"
  },
  "port": "4567"
}

step 4. 本地启动

安装完成以后,我们来本地启动一下是否安装成功,执行如下命令:

代码语言:javascript
复制
./nodebb start

Starting NodeBB
  "./nodebb stop" to stop the NodeBB server
  "./nodebb log" to view server output
  "./nodebb help" for more commands

访问本地http://localhost:4567,这时我们可以看到论坛已经运行起来了

img
img

step 5. 准备部署

nodebb 使用云托管部署特别的容易,因为项目本身已经帮我们把 dockerfile 编写好了,我们无需修改任何的配置,直接编译镜像即可。

代码语言:javascript
复制
docker build -t nodebb:v1.6 .

nodebb:v1.6 = 镜像名称:tag

执行 docker images 来看一下打包的镜像

代码语言:javascript
复制
REPOSITORY    TAG                 IMAGE ID            CREATED             SIZE
nodebb        v1.6                fa7e70e61829        2 days ago          1.63GB

step 6. 推送镜像

我们打开腾讯云来到云开发的界面,找到镜像仓库的位置

云托管
云托管

新建或者选择已有的镜像仓库

在镜像列表点击使用指引,用以下命令将我们本地的镜像推送到云
推送镜像到registry
推送镜像到registry

执行完红色区域的命令以后,执行 docker images,会发现多了一个远端的镜像地址

代码语言:javascript
复制
REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE
nodebb                                                 v1.6                fa7e70e61829        2 days ago          1.63GB
ccr.ccs.tencentyun.com/tcb-1591083693-7844167/nodebb   v1.6                fa7e70e61829        2 days ago          1.63GB

云托管部署

接下来我们回到云托管的界面

新建版本进行部署

新建版本
新建版本

这里需要注意的是服务端口一定要填写你服务启动的端口,这里不是对外访问的端口

镜像拉取
镜像拉取

开启 100%流量,访问的请求才会打到该对应的版本上

最后我们需要看一下服务配置,因为我没有该 nodebb 的路由配置,默认是根目录,所以我们调整一下服务配置

img
img

访问

这时我们就可以对我们部署的应用进行访问了,访问域名http://web.qinmudi.cn/

img
img
img
img

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
    • 为什么需要容器
      • 云托管
        • 用 云托管 + MongoDB 搭建一个nodebb论坛
          • step 1. clone 代码
          • step 2. 安装 mongodb
          • step 3. 初始化配置
          • step 4. 本地启动
          • step 5. 准备部署
          • step 6. 推送镜像
        • 云托管部署
          • 访问
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档