《Docker》Docker完整部署Web应用(Vue+Node+MongoDB)

到这里,docker就安装完成了,接下来就是通过docker安装这种软件了

Nginx安装


Nginx的作用就是做反向代理,我们可以通过它来将访问的地址指向我们的前端界面位置,这样就达到了,访问某个ip或者域名时,打开的是指定的网页

拉取镜像

这一步简单的说就是下载安装包

// latest代表最新版本,如果是指定版本这里填入对应的版本号,比如latest改为0.18,冒号不能删

docker pull nginx:latest

通过docker将最新一个版本的nginx安装包下载下来

查看镜像

下载之后,输入命令

docker images

输入后可以查看到docker下所有的镜像,也就是安装包

在这里插入图片描述

安装镜像

先说一个正常的安装方式,这个方式必须了解,但是不是部署时的命令

docker run --name nginx -p 8080:80 -d nginx

// 参数说明

–name nginx:容器名称。

-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。

-d nginx: 设置容器在在后台一直运行。

这里先了解一个概念,服务器本身是有端口的,这个没问题,docker也是有端口的,上面我们说了,docker是一个类似于虚拟机的存在,虚拟机有端口的,而我们装在docker内部的程序在服务器上是访问不了的,通过端口的映射,可以将docker内部的端口和服务器的端口关联起来

就拿这里距离,当访问服务器的8080端口时,约等于访问了docker的80端口

安装成功后,通过命令查看所有正在运行的镜像,或者说正在运行的程序

docker ps

在这里插入图片描述

部署时的安装

首先说明为什么或者上面正常安装不一样,原因很简单,是因为我们的nginx是安装在docker里面的,上文也提到了,docker和服务器并不相通,我们的前端网页,放在服务器里后,Nginx并不能访问到,每次都需要先将网页上传到服务器,之后,在将服务器的文件拷贝进docker里的Nginx下,这样就很麻烦,所以才有了这种方法

docker run --name mynginx -d --net=“host” --restart=always --privileged=true --net=host -v /usr/docker/mynginx/html:/usr/share/nginx/html -v /usr/docker/mynginx/conf.d:/etc/nginx/conf.d -v /usr/docker/mynginx/logs:/var/log/nginx nginx

好长的命令,不要紧,分开看:

  • 这一段就是上面正常的安装 启动,并关联了服务器的所有端口

docker run --name nginx -d --net=“host”

  • 保持重启docker时默认打开,并设置一些参数

–restart=always --privileged=true --net=host

1)–privileged=true:开启特权模式,可以不用这个命令。

2)–net=host:容器就和宿主机共用网络。

这段命令可以不要

  • 关联网页存放路径

-v /usr/docker/mynginx/html:/usr/share/nginx/html

什么意思?就是说,我们把docker内部nginx里的网页存放路径/usr/share/nginx/html,和服务器上面的/usr/docker/mynginx/html文件关联起来,以后就不需要放docker下Nginx里的路径拷贝了,只需要上传一次,上传到关联的路径就可以了

  • 关联Nginx的配置文件路径

-v /usr/docker/mynginx/conf.d:/etc/nginx/conf.d

同理,Nginx的配置文件路径也要关联,不然,虽然上传了网页文件,但是改配置文件还要进docker里,去找到Nginx的配置文件修改,也太麻烦了

  • 关联Nginx日志文件路径

-v /usr/docker/mynginx/logs:/var/log/nginx

同理,日志文件也是要关联的

配置文件

上面虽然关联了Nginx的配置文件路径,但是里面没有配置文件,因此,我们需要写一个配置文件放入文件夹

前端转发

server{

listen 80;

server_name 服务器地址;

location / {

root /usr/share/nginx/html;

}

}

这里服务器地址填自己的服务器地址

小结

到这里,Nginx算是装好了,在这一步中,我们使用docker安装了nginx,并且使用nginx监听了服务器的端口,当端口被触发,那么自动会将网页返回;

前端文件上传


前端的文件上传比较简单,只需要将网页文件完整的上传到刚刚配置好的Nginx对应的文件夹下就行了。

对了, Vue项目的话需要先将其打包,打包的指令

npm run build

打包完了之后,使用终端工具,比如FInalShell,将前端工程文件整体上传到服务器文件夹下,上文的话,就是上传到/usr/docker/mynginx/html文件夹下。

小结

这一环节就结束了,到这里为止,应该访问服务器的IP地址,已经可以打开网页了,只是网页不正常而已,因为没有后台的支撑。

安装MongoDB


同样,MongoDB具体是什么,怎么使用就不细说了,简单的说,就是一个数据库,是非关联性数据库的代表,它的结构,使用方式,对前端而言还是相对比较容易理解的;

拉取镜像

下载镜像,也就是安装包

docker pull mongo:latest

安装启动镜像

docker run -itd --name mongo -p 27017:27017 mongo --auth

// 参数解释

–auth:需要密码才能访问容器服务。

这里将docker内部的27017端口和服务器的27017端口绑定,注意的是,阿里云自己有安全策略的,绑定了端口不代表端口就开放了,因此需要到阿里云官网上面去,进入服务器配置,找到“配置安全规则”,将端口27017加进去

在这里插入图片描述

创建用户

数据库肯定要用户名密码才能访问,所以需要先创建一个用户,首先先进入docker下的mongo

docker exec -it mongo mongo admin

然后创建一个用户,设置密码,并赋值该用户对数据库的操作权限,如果是为其它数据库创建用户是一样的操作,就是把db的值对应到数据库名

创建一个名为 admin,密码为 111111的用户。

db.createUser({ user:‘admin’,pwd:‘111111’,roles:[ { role:‘userAdminAnyDatabase’, db: ‘admin’}]});

尝试使用上面创建的用户信息进行连接。

db.auth(‘admin’, ‘111111’)

接着,通过命令切换到admin数据库下

use admin

输入命令db.stats() 或者 show users,你可能会遇到错误 not authorized on admin to execute command…

如果报错了,那么说明此时还没有操作权限,需要进一步创建信息

db.auth(“admin”, “111111”)

db.grantRolesToUser(“admin”, [ { role: “readWrite”, db: “admin” } ])

权限说明

  • 数据库用户角色:read、readWrite;

  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;

  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

  • 备份恢复角色:backup、restore

  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  • 超级用户角色:root

连接数据库

数据库创建成功后,那么就是测试是否可以连接了,安装个工具Navicat,点击左上角的“连接”,选择MongoDB,填完后,点击左下角的测试链接,提示“连接成功”

在这里插入图片描述

小结

到这里数据库就安装成功了,本地的后台应该可以连接到数据库,从数据库读取信息,存储信息

安装Node.js


在这一环节,默认已经有一个基于Node.js的后台工程了,现在的目标是需要将这个后台在服务器上启动,供前台访问;

拉取镜像

还是要先下载镜像

// 最新的,或者latest换成指定的版本号

docker pull nodejs:latest

安装镜像

这一步,和别的安装镜像不大一样了,我们的目的是将:后台程序+Node.js镜像打包,组成一个全新的镜像,然后安装启动这个镜像,这样我们的后台程序就可以跑在docker里了

Dockerfile

怎么打包成一个新镜像呢?这就用到了Dockerfile,什么是Dockerfile,简单的说:Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
里一直到现在。**

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-8LIsaOrH-1715719988583)]

[外链图片转存中…(img-IDS5V7Vb-1715719988584)]

[外链图片转存中…(img-aPtUvtAP-1715719988584)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
个人简历 基本信息: 姓名:xxx 性别:男 出生日期:xxxx年xx月 联系电话:xxxx-xxxxxxx 邮箱:xxxxx@xx.com 教育背景: xxxx年-xxxx年,xxx大学,计算机科学与技术专业,本科 工作经历: xxxx年至今,xxx公司,PHP工程师 - 参与公司内部网点对公效能系统的开发,使用PHP Zend Framework和Vue.js技术栈 - 负责系统的设计、开发、测试、部署和维护 - 使用Docker和Jenkins进行自动化部署,提高了开发效率和部署效率 - 与团队成员紧密合作,参与需求讨论、技术选型和代码评审等工作,保证项目的质量和进度 - 完成了多个独立模块的开发和维护,包括用户管理、权限管理、数据统计等 - 解决了多个线上问题,保证了系统的稳定性和可用性 技能清单: - 熟练掌握PHP语言,了解PHP Zend Framework和Laravel等框架 - 熟悉前端开发,熟练掌握Vue.js和Element UI等前端框架 - 熟悉MySQL数据库,了解Redis缓存和MongoDB等NoSQL数据库 - 熟练掌握Docker和Jenkins等自动化部署工具 - 了解Linux系统,熟悉常用命令和Shell脚本编写 - 了解Git版本控制工具,熟悉GitHub和GitLab等平台 自我评价: - 具备良好的沟通能力和团队协作能力,能够与团队成员紧密合作,共同完成项目 - 熟悉敏捷开发方法,能够快速响应需求变化,保证项目进度和质量 - 具备较强的自学能力和解决问题能力,能够独立思考和解决问题 - 热爱技术,乐于分享和交流,能够不断学习和提升自己的技能水平 希望能够为贵公司的项目做出贡献,期待贵公司的面试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值