Docker搭建部署Node项目的方法步骤,Node服务部署搭建方法
前段时间做了个node全栈项目,服务端技术栈是 nginx + koa + postgresql。其中在centos上搭建环境和部署都挺费周折,部署测试服务器,接着上线的时候又部署生产环境服务器。这中间就有很多既无聊又费精力,吃力不讨好的"体力活"。所以就开始思考怎么自动化这部分搭建部署的工作,也就引出了Docker。
什么是DockerDocker 是比虚拟机还要轻量级的虚拟化技术,它虚拟化的实体就叫做容器。容器本身就是一个隔离了作用域的sandbox,同时它只包含了基础库和本身承载的服务,非常精简。容器运行起来后就只是宿主机中的一个进程而已,占用的资源是非常小的,这就为操作系统上运行容器集群创造了条件,可操作性和灵活性极佳。
镜像和容器又是什么关系呢?可以把镜像看成是类(class),容器看成对象(object),容器是由镜像实例化产生出来的,当然一个镜像可以生成多个容器。
客户端Docker如果不在服务器,我们在客户端要怎么使用 Docker呢?在 Windows 和 OSX 上可以使用 Docker Desktop,再加上Kitematic,这两个都是桌面管理工具,常规的操作方面非常便利。Docker Desktop 和 Kitematic 只是可视化了部分操作,命令行还是必备的,因为很多操作也只能命令行才行。
Docker基本操作镜像名称关于镜像标签,比如nginx:1.19.0-alpine,1.19.0是 nginx 的版本号,alpine是os的代号。
Jessie: debian 8Stretch: debian 9Buster: debian 10Alpine: Alpine,推荐使用,因为体积非常小Alpine 是体积最小的一个版本,有些甚至是其他版本的四分之一。这意味着构建镜像更快,运行效率更高,因为加载的组件更加少,无形中也意味着漏洞更少更安全。
拉取镜像docker pull nginx:1.19.0-alpine
启动容器
--name web:指定容器名称为web-p 8080:80: 容器nginx监听端口为80,映射到本地端口8080-v xxxx:xxxx:这里是用本地配置文件映射到容器nginx配置文件-d:后台运行nginx:1.19.0-alpine:使用的镜像docker run --name web -p 8080:80 -v /usr/etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx:1.19.0-alpine其他操作docker images #显示镜像docker rmi xxx #删除镜像docker ps #显示运行的容器docker rm xxx #删除容器Dockerfile
构建镜像比较方便的是使用Dockerfile,它就是镜像的配置文件,只要有Dockerfile,随时可以构建镜像。如下就是构建一个非常简单的nginx镜像,from就是构建时使用的基础镜像:
FROM nginxCOPY nginx.conf /etc/nginx/nginx.confDocker-compose
当我们的项目不仅只有单个容器,而是需要运行多个容器,而且容器之间还需要互相通信的时候,就需要更强大的管理工具了。比如k8s,但我们目前的小项目使用官方自带的Docker-compose已经足矣。
首先需要docker-compose.yml配置文件,比如下面就是两个容器的模板,image表示使用的镜像,ports则表示端口映射,volumes则是需要映射的数据卷:
version: "3"services: webapp: image: web ports: - "8080:80" volumes: - "/data" redis: image: "redis:alpine"
接着可以使用以下命令行进行操作:
docker-compose build [options] [SERVICE...] #构建(重新构建)项目中的服务容器docker-compose up -d # 运行 compose 项目,后台执行
docker-compose up 是个非常强大的命令,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。链接的服务都将会被自动启动,除非已经处于运行状态。可以说,大部分时候都可以直接通过该命令来启动一个项目。
构建nginx-node-postgres项目有了上面的基础,接着就可以构建我们自己的项目了,首先是node服务的dockerfile,主要做了如下步骤
创建容器工作目录复制相关配置文件到容器在容器安装npm包运行pm2启动容器FROM node:14.5.0-alpine3.12# 工作目录WORKDIR /usr/src/app# 复制配置文件COPY package*.json ./COPY process.yml ./RUN npm set registry https://registry.npm.taobao.org/ \ && npm install pm2 -g \ && npm install# 使用pm2管理CMD ["pm2-runtime", "process.yml", "--only", "app", "--env", "production"]EXPOSE 3010
接着配置 docker-compose.yml
db配置的是数据库postgres,其中数据卷 volumes 映射了数据库目录和初始化脚步app配置的是node服务,其中的build是映射上面dockerfile所在的目录;depends_on表示依赖的容器、启动先后,这里先启动db再启动node;links表示将db的名称映射到app容器nginx容器depend_on于app容器,同时配置转发node的服务version: '3'services: db: image: postgres:12.3-alpine container_name: postgres environment: - TZ=Asia/Shanghai - POSTGRES_PASSWORD=xxxx volumes: - ./postgres/data:/var/lib/postgresql/data - ./postgres/init:/docker-entrypoint-initdb.d ports: - 5432:5432 restart: always #始终重启,生产环境中推荐配置为 always expose: - 5432 app: image: koa-pg container_name: koa volumes: - ./dist:/usr/src/app/dist - ./logs:/usr/src/app/logs build: ./ environment: - TZ=Asia/Shanghai restart: always depends_on: - db links: - db expose: - 3010 nginx: image: nginx:1.19.0-alpine container_name: nginx volumes: - ./nginx.conf:/etc/nginx/nginx.conf ports: - 8080:80 environment: - TZ=Asia/Shanghai restart: always depends_on: - app links: # host名代替ip配置nginx的转发 - app expose: - 8080
配置完我们的项目之后,接着就是运行起来
docker-compose up
在我们的本地开发机是如此,部署到服务器也是如此,你想要部署几台服务器就部署几台,只要装了docker,都是一句命令行就能解决的事情。
要启动几个容器,修改下docker-compose.yml的配置,再次docker-compose up,so easy !
到此这篇关于Docker搭建部署Node项目的方法步骤的文章就介绍到这了,更多相关Docker搭建部署Node 内容请搜索元马网以前的文章或继续浏览下面的相关文章希望大家以后多多支持元马网!Docker搭建部署Node项目的方法步骤,Node服务部署搭建方法相关内容。
本文地址:http://m.55jiaoyu.com/show-703516.html
本文由合作方发布,不代表展全思梦立场,转载联系作者并注明出处:展全思梦
推荐文档
- 11.往年大连中考满分是多少
- 12.为什么说学播音毁一生,原因有哪些
- 13.淘宝店铺的优质好评语大全
- 14.考研可改变第一学历吗、专科考研可以改变第一学历吗
- 15.民学网查出的学历国家承认吗(民学网查出的学历国家承认吗是真的吗)
- 16.往年轻薄商务笔记本电脑推荐-商务轻薄本性价比排行
- 17.承德护理职业学院(承德护理职业学院2023年招生计划)
- 18.wreak是什么意思wreak的翻译(wake,area是什么意思中文翻译)
- 19.电子科技大学A+类学科名单有哪些(含A、B、C类学科名单)
- 20.systematic是什么意思systematic的翻译(systematically是什么意思中文翻译)
- 21.leant是什么意思leant的翻译(lean,on什么意思中文意思)
- 22.华南农业大学是几本大学,华南农业大学是一本还是二本
- 23.包头中考考试科目时间预测安排,包头中考考哪几门考哪些课程
- 24.高考430分能上什么大学,430分高考能报啥学校
- 25.朱自清的散文代表作有什么(朱自清的散文代表作有什么散文集有什么散文诗集有什么)
- 26.浙江有几所大学是985和211,全国985和211大学名单汇总
- 27.i5,1155G7和R5,5600U哪款好-对比评测
- 28.荷兰什么叫-荷兰弟为什么叫荷兰弟,出演蜘蛛侠原因曝光
- 29.警察警衔工资改革新政策及新方案【全文】解读
- 30.电大专科(电大专科毕业论文)
- 31.广东省高级技工学校官网
- 32.广州大学专科
- 33.大连陆军学院,原大连陆军学院校址现在什么是什么学校
- 34.亲们,谁给一份南京大学的研究生招生简章?(河海大学
- 35.他日若遂凌云志全诗及出处
- 36.铜绿的化学式是什么有哪些性质
- 37.「佛山市顺德养正西山学校初中部」往年录取分数线
- 38.公办本科(公办本科和民办本科有什么区别)
- 39.外交学院是名牌大学吗
- 40.往年湖南高考成绩排名一分一段表
- 41.全国有8所烟草院校是哪些(这4所大学门槛低)
- 42.私人垄断资本主义基本概念是私人垄断资本主义
- 43.难以启齿,这8部影片可以一看(性教育适合看的影片)
- 44.美国独立战争的性质爆发战争的原因是什么
- 45.往年东莞市高中排名前十最新
- 46.大朗网络教育(大朗教育)
- 47.往年甘肃省高中排名最好的高中
- 48.逻辑思维训练有哪些方法优秀训练方法推荐
- 49.浙江大学教务管理系统
- 50.人类的动物老师有哪些这属于什么学科
- 51.往年山西高考状元榜_山西历届高考理科状元和文科状元
- 52.往年北京舞蹈学院艺术类招生简章招生人数及专业
- 53.航空最好的5个专业就业前景如何
- 54.太原科技大学怎么样及评价好不好太原科技大学口碑如何
- 55.满招损谦受益这句话的意思是什么出自哪
- 56.舍本逐末发生在什么时期含义是什么
- 57.女孩子首选十大专业什么专业适合女生
- 58.国防生是什么意思指的是什么
- 59.河南省三本学院有哪些2018最新三本院校名单
- 60.往年龙岩高中学校排名榜单龙岩十大优秀高中
- 51.海尔集团是国企吗,海尔是不是国有企业
- 52.内屏漏液不修会损坏手机吗,手机内屏漏液不修会恶化吗
- 53.招募小车司机,我是小车司机有人招聘吗
- 54.苹果港版和国行的区别,苹果港版和国行的差别具体一点有哪些
- 55.成都房地产策划公司,成都比较好的房地产营销策划公司是哪家
- 56.重大税收违法案件当事人名单在哪查,税收违法案件当事人名单怎么查
- 57.万家乐电热水器维修部,请问万家乐的售后维修电话号码多少?
- 58.天津电信号码网上选号,厦门电信号码网上选号
- 59.中国皮具箱包人才网,我想在中国皮具人才网招聘,请问是免费的吗?
- 60.折盘是什么意思,房地产折盘什么意思
- 61.政府镜什么价钱,以差为镜给政府公权力戴上紧箍
- 62.怎么样条件下要求重新评标,可否启动重新评标
- 63.三P招标是什么意思,战采的本质区别是什么
- 64.政治工作部管什么时候,管综政治什么时候准备
- 65.同科林设备卖的怎么样,有限公司怎么样
- 66.医院医疗耗材怎么配送,寄医疗耗材选跨越速运
- 67.龙南渡江在哪里,渡江镇道路地图查询
- 68.乙唑螨腈,怎么使用,杀螨利器乙唑螨腈怎么使用才更高效呢
- 69.租用农村住房期满,怎么办,没承包地的农户怎么办
- 70.罗亭江中什么时候开工,力争今年农村居民可支配收入增长10%

