docker部署node.js(express)后端项目和vue前端项目(数据库:mongoDB)
前置知识链接我之前写的一篇博客 使用docker部署springboot项目并连接上mysql数据库地址:https://blog.csdn.net/hangao233/article/details/1043956931. docker 下载指定版本mongoDB镜像1.1 运行mondoDB容器我使用的mongodb版本是4.1.6,建议也用同样的版本docker pull mongo:4.1
前置知识链接
项目开源地址:
前端vue:https://gitee.com/gaohan888/echarts-learning/tree/master/vision
后端node.js: https://gitee.com/gaohan888/node-js-learning/tree/master/echarts_server
我之前写的一篇博客 使用docker部署springboot项目并连接上mysql数据库
地址:https://blog.csdn.net/hangao233/article/details/104395693
1. docker 下载指定版本mongoDB镜像
1.1 运行mondoDB容器
我使用的mongodb版本是4.1.6,建议也用同样的版本
docker pull mongo:4.1.6
运行docker容器
docker run --name mymongo -v /home/sxf/sxf/mymongo/data:/data/db -p 27017:27017 -d mongo:4.1.6
参数详解
–name 容器名字
-v 冒号前:宿主机位置,冒号后docker中的位置,在关闭mongodb容器后也能在宿主机中查看数据
-p 27017:27017将主机和宿主机27017端口绑定
-d 运行的容器及版本
此时可以 docker ps 查看此容器是否已经运行,我的是运行成功
1.2 服务器的配置
服务器配置总结为三个,防火墙,端口,和安全组
查看防火墙状态,如未开启要开启防火墙,我的是开启的
firewall-cmd --state
如果没开启,开启防火墙的命令
systemctl start firewalld.service
添加对外开放的端口,我之前已经开了三个端口,一个80(Http端口),一个8080(tomcat),一个3306(mysql)
现在再开一个mongoDB端口,也可以不开,我是开了测试一下
firewall-cmd --zone=public --add-port=27017/tcp --permanent
开完端口,要重新加载防火墙
firewall-cmd --reload
查看开放的端口
firewall-cmd --list-ports
配置安全组:百度如何配置进入配安全组的地方,按照下图配置的条件配置即可
安全组地址:
https://ecs.console.aliyun.com/?spm=5176.2020520101securitygroup.top-nav.18.37304df5nEyC3T#/securityGroup/region/cn-zhangjiakou
最后测试环节
我从本机用mongoDB Compass 连接远程服务器用docker跑的服务器容器
连接成功
2. docker 下载指定版本 node.js 和将 node.js 后端项目跑起来
2.1 上传 Node.js 项目
我是使用xftp 把本地的node.js 项目上传到 服务器的一个文件夹下
2.2 编写 Dockerfile 文件
创建一个空文件,命名为 Dockerfile:
touch Dockerfile
编写Dockerfile文件
vim Dockerfile
完整命令, vim的使用方法:点击i开始编写,编写完后点击esc,点击冒号,输入wq保存
完整 Dockerfile 内容
FROM node:16.13.1
WORKDIR /usr/src/echarts
COPY . /usr/src/echarts
RUN npm install
EXPOSE 8888
CMD [ "node", "app.js" ]
解释
FROM : FROM是构建镜像的基础源镜像,node:16.13.1 这个是镜像的名称和对应的版本,也就是我们一开始从服务器上拉下来的那个Image。如果本地没有Docker 会自己pull镜像。
WORKDIR:是将我们创建的文件夹做为工作目录(注意:这个文件路径是镜像内部的文件路径)
COPY:是把服务器当前目录下的所有文件拷贝到镜像的/usr/src/echarts文件夹下。
RUN 使用npm 安装我们的app据需要的所有依赖。
EXPOSE 8888 由于我们的web app监听的是8888端口,我们把这个端口暴露给主机,这样我就能从外部访问web了。
CMD [ “node”, “app.js” ] 是运行这个node.js 项目
在你Dockerfile文件所在的目录下运行下面的命令来构建一个镜像.
docker build -t echarts .
这就是创建好了镜像
再去阿里云安全组配置下 8888 端口
开始运行这个镜像生成容器
docker run --name echarts_server -d -p 8888:8888 echarts
用 docker ps 查看容器
注意 8888端口的防火墙记得打开哦
更多推荐
所有评论(0)