Centos安装Docker,docker安装mongodb,idea集成mongodb,windows下nginx配置

107 阅读3分钟

一.安装Docker

首先Centos必须是7及以上版本,查看版本命令:  cat /etc/redhat-release

安装gcc、工具相关

yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils

设置stable镜像库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

这里直接用阿里的镜像,毕竟官网的话老卡了

更新yum索引,然后安装Docker ce

yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io

启动Docker

systemctl start docker

一般都是这步会出问题,会出 Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details. 这样的问题

vim /etc/docker/daemon.json

直接进入编辑模式修改json文件,内容全部删除改成

{
    "storage-driver": "devicemapper"
}

然后esc退出编辑模式,:wq保存退出

再次启动会发现成功

二.Docker容器部署mongoDB

简而言之mongodb是用于海量数据高并发读写,不能适应多表关联复杂查询以及事务的一致性,特点是对象型命令和存储

#拉取镜像

docker pull mongo:latest

 

#创建和启动容器

**docker run -d --restart=always -p 27017:27018--name mymongo -v /data/db:/data/db -d mongo --privileged=true


#进入容器

docker exec -it **mymongo** ****/bin/bash

 

#使用MongoDB客户端进行操作,6.0及以上

mongosh

#使用MongoDB客户端进行操作,6.0以下
mongo

show dbs #查询所有的数据库

#常用命令对比
# select * from User where name = 'zhangsan'

> db.User.find({name:"zhangsan"})

# select name, age from User where age = 21

> db.User.find({age:21}, {'name':1, 'age':1})

# select * from User order by age

> db.User.find().sort({age:1})
#在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

# select * from User skip 2 limit 3

> db.User.find().skip(0).limit(3)
#在 MongoDB 中使用 limit()方法来读取指定数量的数据,skip()方法来跳过指定数量的数据

# select * from User where age in (21, 26, 32)

> db.User.find({age:{$in:[21,26,32]}})

# select count(*) from User where age >20

> db.User.find({age:{$gt:20}}).count()

# select * from User where age = 21 or age = 28

> db.User.find({$or:[{age:21}, {age:28}]})

# update Userset age = 100, sex = 0 where name = 'user1'

> db.User.update({name:"zhangsan"}, {$set:{age:100, sex:0}})

> db.User.remove(id)

//移除对应id的行

> db.User.remove({})

//移除所有

以上资料来源于尚医通的课件

聚合表达式:

表达式****描述****实例****
$sum计算总和。db.mycol.aggregate([{group : {_id : "by_user", num_tutorial : {sum:"sum : "likes"}}}])
$avg计算平均值db.mycol.aggregate([{group : {_id : "by_user", num_tutorial : {avg:"avg : "likes"}}}])
$min获取集合中所有文档对应值得最小值。db.mycol.aggregate([{group : {_id : "by_user", num_tutorial : {min:"min : "likes"}}}])
$max获取集合中所有文档对应值得最大值。db.mycol.aggregate([{group : {_id : "by_user", num_tutorial : {max:"max : "likes"}}}])
$push在结果文档中插入值到一个数组中。db.mycol.aggregate([{group : {_id : "by_user", url : {push:"push: "url"}}}])
$addToSet在结果文档中插入值到一个数组中,但不创建副本。db.mycol.aggregate([{group : {_id : "by_user", url : {addToSet:"addToSet : "url"}}}])
$first根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{group : {_id : "by_user", first_url : {first:"first : "url"}}}])
$last根据资源文档的排序获取最后一个文档数据db.mycol.aggregate([{group : {_id : "by_user", last_url : {last:"last : "url"}}}])

三.idea集成mongodb

在application.properties文件添加配置

spring.data.mongodb.uri=mongodb://47.93.118.241:27017/test

其中地址为你在linux中的ipv4地址,要注意防火墙的关闭和27017端口的开启

pom.xml依赖:

<**dependencies**>  
    <**dependency**>  
        <**groupId**>org.springframework.boot</**groupId**>  
        <**artifactId**>spring-boot-starter-data-mongodb</**artifactId**>  
    </**dependency**>  
    <**dependency**>  
        <**groupId**>org.springframework.boot</**groupId**>  
        <**artifactId**>spring-boot-starter-web</**artifactId**>  
    </**dependency**>  
  
    <**dependency**>  
        <**groupId**>org.projectlombok</**groupId**>  
        <**artifactId**>lombok</**artifactId**>  
    </**dependency**>  
  
    <**dependency**>  
        <**groupId**>joda-time</**groupId**>  
        <**artifactId**>joda-time</**artifactId**>  
        <**version**>2.10.1</**version**>  
    </**dependency**>  
  
    <**dependency**>  
        <**groupId**>org.springframework.boot</**groupId**>  
        <**artifactId**>spring-boot-starter-test</**artifactId**>  
        <**scope**>test</**scope**>  
        <**exclusions**>  
            <**exclusion**>  
                <**groupId**>org.junit.vintage</**groupId**>  
                <**artifactId**>junit-vintage-engine</**artifactId**>  
            </**exclusion**>  
        </**exclusions**>  
    </**dependency**>  
</**dependencies**>

常用方法:

mongoTemplate.findAll(User.class): 查询User文档的全部数据  
mongoTemplate.findById(<id>, User.class): 查询User文档idid的数据  
mongoTemplate.find(query, User.class);: 根据query内的查询条件查询  
mongoTemplate.upsert(query, update, User.class): 修改  
mongoTemplate.remove(query, User.class): 删除  
mongoTemplate.insert(User): 新增

引用时

@Autowired  
    private MongoTemplate mongoTemplate;

直接调用即可 也可以定义接口去生成注解调用

@Repository  
public interface UserRepository extends MongoRepository<User, String> {  
  
}

#调用时:
@Autowired  
    private UserRepository userRepository;

四.nginx配置

直接添加server,config里的

server {

        listen       9001;

        server_name  localhost;

 

location ~ /hosp/ {           

    proxy_pass http://localhost:8201;

}

location ~ /cmn/ {           

    proxy_pass http://localhost:8202;

}

}


调整/config/dev.env.js中的BASE_API

BASE_API: 'http://localhost:9001'

这样访问http://localhost:9001可以进入页面,不同的location对应不同的功能模块,可以解决想要使用不同端口访问的问题

也可以设置轮询和权重去分配不同性能服务器的压力

upstream backend {
  server a weight=6;
  server b weight=3;
  server c weight=1;
}

会在a,b,c进行轮询,权重以此是6:3:1,a,b,c是服务器ip