阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Docker部署Node.js应用环境

421次阅读
没有评论

共计 4193 个字符,预计需要花费 11 分钟才能阅读完成。

利用 Docker 部署的服务器环境已经成为目前主流。为了实现高负载、易于拓展,我们采用 Nginx 作为反代,Redis 记录访问日志。(主机服务器环境:CentOS7.1)

1、安装并启动 Docker

yum update
yum install docker

设置开机启动:

systemctl enable docker.service

启动 docker:

systemctl start docker.service

使用:

docker info

可以查看 docker 的信息,检查是否安装成功。

CentOS7 的 systemctl 命令:

systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable .service #开机运行服务
systemctl disable
.service #取消开机运行
systemctl start .service #启动服务
systemctl stop
.service #停止服务
systemctl restart .service #重启服务
systemctl reload
.service #重新加载服务配置文件
systemctl status .service #查询服务运行状态
systemctl –failed #显示启动失败的服务

与老版本对比,以 httpd 为例,则:

启动服务(等同于 service httpd start)
systemctl start httpd.service
停止服务(等同于 service httpd stop)
systemctl stop httpd.service

2、在 Docker 中安装 Nginx

docker run -d -p 80:80 nginx


这是运行命令,但 docker 会检测是否存在本地镜像 nginx,如果不存在则执行“docker pull nginx”,你会看到下载 docker 镜像的界面。如果下载成功则会自动执行,如果执行成功,则会输出一串字符串。如下图
docker-run

 

如果出现 Warning:”Usage of loopback devices is strongly discouraged for production use.”(据我所知阿里云、腾讯云及 VMware 中的 CentOS7 都会出现):

vim /etc/sysconfig/docker-storage

修改里面的 DOCKER_STORAGE_OPTIONS 内容为:

DOCKER_STORAGE_OPTIONS="--storage-opt dm.no_warn_on_loop_devices=true"


PS:我同时在阿里云和腾讯云执行“docker run -d -p 80:80 nginx”这个命令。阿里云因为做了加速,所以很快安装完成,但腾讯云卡死。解决方法:在安全性要求不高的情况下可以使用国内镜像,否则请使用安全的网络环境和可信来源。

(注意,第二次运行这个命令的时候,请使用完整的 REPOSITORY,否则部分服务器可能会有警告并自动结束 docker,例如:“

docker run -p 80:80 docker.io/nginx


”)

运行

docker pull index.alauda.cn/library/nginx


可以使用国内镜像安装 nginx,本文实例使用官方镜像。

这个步骤安装成功后,访问服务器 IP 地址,则会出现以下页面,说明安装成功!

wellcome-to-nginx

 

这时候运行

docker ps


可以看到正在运行的 nginx docker。

docker-stop

使用

docker stop ID


其中“ID”可以用前几个字符,只要能唯一识别即可。例如上图中的容器 ID,我们可以使用“1e3c3ce23d5b”,也可以使用“1e3c”来结束容器。同理,其它 docker 的操作也是类似的。

docker ps -l


可以查看运行过的所有 docker,包括已经运行结束了的 docker。

第一个命令中“docker run”后面的“-d”代表是否在后台运行,去掉这个“-d”执行“docker run -p 80:80 nginx”可以看到访问记录。使用“Ctrl+C”结束执行,则 docker 自动退出。因此在服务器中执行时请带上“-d”参数。

使用

docker images


可以查看安装了的所有本地镜像。

3、在 Docker 中安装 Node.js 并运行 Node.js 程序

docker pull node


安装完毕后可以通过

docker run -it --rm node node --version


查看 node.js 版本号。

接下来上传你的源代码到服务器。例如从公司服务器克隆源代码:get clone XXX。

确保你的源代码目录下 package.json 文件配置正确。

然后

docker run --rm -it -p 3000:1337 --name WebApp -v "$(pwd)":/webapp -w /webapp  node npm install



docker run -itd -p 3000:1337 --name WebApp -v "$(pwd)":/webapp -w /webapp  node npm start


安装依赖并运行程序。

- v 后面的: 代表分割的路径,前者表示宿主的路径(在这里也就是 expressjs 项目的主目录),后者表示映射到 Docker 容器的路径。
-w:表示将 - v 映射的 /webapp 目录设置为 work directory,也就是运行 node 命令的目录。这个设置将覆盖 Dockfiie 中的设置:/Data。

其中-itd

    • i,容器的标准输入保持打开
    • t,Docker 分配一个伪终端(pseudo-tty)并绑定到容器的标准输入
    • d:Docker 容器跑在后台。


–rm,运行结束后删除容器。

4、Nginx 反代


利用 Nginx 反代能够很方便的实现负载均衡。

mkdir config


在 /root 目录下创建一个名为 config 的目录用于存放 Nginx 的配置文件。

vim config/nginx.conf


在这个配置文件中配置反代。

server {
listen 80;
server_name 绑定的域名;
location / {
proxy_pass http://localhost:3000;
}
}


设置方法参考 Nginx,这些我想大家都已经很熟悉了。

最后执行

docker run -itd -p 80:80 --link WebApp:localhost -v pwd/config/nginx.conf:/etc/nginx/conf.d/host_one.conf  -v pwd/logs:/var/log/nginx nginx


即可。访问绑定的域名,则可以访问到 node.js 的程序。

需要注意的是,“-v <code>pwd/config/nginx.conf:/etc/nginx/conf.d”中的“pwd/config”代表 server 文件的本地路径,意思是当前目录下的 config 文件,将会映射到 docker 容器的 nginx 配置路径。而“:”后面的路径则是服务器中的路径,默认的 nginx.conf 文件中包含“include /etc/nginx/conf.d/.conf;”,也就是默认载入 conf.d 文件夹中的.conf 后缀的文件。最后执行这个命令会在当前目录下创建 logs 目录,存放 access.log 和 error.log。刚开始配置的时候,最好去掉“-itd”中的“d”,运行命令查看是否存在问题。如果运行正常,先执行“docker rm $(docker ps -a -q)”清除所有已经执行过的 docker,再执行带“d”的命令进入后台运行。

如果使用 SSL 证书,则 Nginx 配置文件按照证书提供商提供的设置方法设置,一般要设置 443 端口,则在 ”-p” 后映射需要的端口,并且在运行 nginx 容器的时候设置 SSL 的路径:-v <certs-dir>:/etc/nginx/certs。

5、Redis 记录访问日志

采用 Redis 进行日志记录,方便高效。

docker run -d --name redis -p 6379:6379 redis

在启动 node.js 程序的时候加上“–link redis:redis”即可。其他 MongoDB、MySQL 之类的数据库同理。

至于需要记录什么日志,与具体的项目需求有关。一般来说我们使用 Redis 记录 HTTP 访问日志和应用日志。

6、常用的 Docker 清理命令

杀死 所有 正在运行 的容器

docker kill $(docker ps -a -q)

删除所有已经停止的容器

docker rm $(docker ps -a -q)

删除所有未打 dangling 标签的镜像

docker rmi $(docker images -q -f dangling=true)

删除所有已下载的本地镜像

docker rmi $(docker images -q)

下面关于 Node.js 的内容你可能也喜欢

在 Ubuntu 14.04/15.04 上安装配置 Node.js v4.0.0  http://www.linuxidc.com/Linux/2015-10/123951.htm

如何在 CentOS 7 安装 Node.js http://www.linuxidc.com/Linux/2015-02/113554.htm

Ubuntu 14.04 下搭建 Node.js 开发环境  http://www.linuxidc.com/Linux/2014-12/110983.htm

Ubunru 12.04 下 Node.js 开发环境的安装配置 http://www.linuxidc.com/Linux/2014-05/101418.htm

Node.Js 入门[PDF+ 相关代码] http://www.linuxidc.com/Linux/2013-06/85462.htm

Node.js 开发指南 高清 PDF 中文版 + 源码 http://www.linuxidc.com/Linux/2014-09/106494.htm

Node.js 入门开发指南中文版 http://www.linuxidc.com/Linux/2012-11/73363.htm

Ubuntu 编译安装 Node.js http://www.linuxidc.com/Linux/2013-10/91321.htm

Node.js 的详细介绍:请点这里
Node.js 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-09/135498.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4193字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960576
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...