【MongoDB+docker】docker 配置 mongodb 复制集

dockerfile:
#base images
FROM ubuntu:latest
MAINTAINER yao.3.li@uconn.edu

#install mongodb
RUN apt-get update
RUN apt-get -y install curl
RUN curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
RUN tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
RUN mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
RUN export PATH=/usr/local/mongodb/bin:$PATH
ADD ./run.sh /run.sh
RUN chmod 777 /run.sh

#database directory
RUN mkdir -p /data/db
RUN mkdir -p /data/log
RUN touch /data/log/r.log
RUN mkdir -p /data/config

#port
EXPOSE 27017

ENTRYPOINT ["/run.sh"]

docker-compose.yml:
version: '3.2'
services:
  primary:
    image: mongodb
    ports:
      - "27017:27017"
    environment:
      - role=prime
    volumes:
      - ./config/r0.conf:/data/config/c.conf
      - ./runPrime.sh:/runPrime.sh


  secondary1:
    image: mongodb
    ports:
      - "27018:27017"
    environment:
       - role=secondary
    volumes:
      - ./config/r1.conf:/data/config/c.conf

  secondary2:
    image: mongodb
    ports:
      - "27019:27017"
    environment:
       - role=secondary
    volumes:
      - ./config/r1.conf:/data/config/c.conf

r0.conf与r1.conf暂时一样:
#数据文件夹
dbpath=/data/db

#日志文件夹,如果以后台方式运行,必须指定logpath
logpath=/data/log/r.log

#以追加而非覆盖方式写入日志
logappend=true

#端口
port=27017

#以后台方式运行  
#fork=true 
run.sh:
#!/bin/bash
/usr/local/mongodb/bin/mongod -f /data/config/c.conf --replSet "rs0"

runPrime.sh:
#!/bin/bash
mongo localhost:27017/admin conf.js
conf.js:
config={_id:"rs0", 
	members:[{_id:0,host:"primary",priority:1}, 
				{_id:1,host:"secondary1",priority:0}, 
				{_id:2,host:"secondary2",priority:0}]
		}

rs.initiate(config)
rs.conf()

rs.add("secondary1")
rs.add("secondary2")

运行过程:
先构建镜像:
docker build -t mongodb .
启动容器:
docker-compose up -d
登录主库,使用脚本配置,也即运行runPrime.sh来配置复制集:
./runPrime.sh

之后登录即可验证:
mongo --port 27017


提示符带有了primary,说明配置成功。
当然可以进一步在主库写,从库读,但是需要在从库中使用:
db.setSlaveOk()

才能读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要制作一个 MongoDBDocker 镜像,你可以按照以下步骤进行操作: 1. 创建 Dockerfile 文件,在其中定义镜像的构规则。可以使用任何文本编辑器创建该文件。 2. 在 Dockerfile 中指定基础镜像,例如使用官方提供的 MongoDB 镜像作为基础镜像。可以使用以下指令来指定基础镜像: ```Dockerfile FROM mongo:latest ``` 3. 可选:如果你需要在容器中设置环境变量、复制文件或运行其他命令,请使用适当的 Dockerfile 指令进行操作。你可以根据需要添加以下指令来完成这些任务: - `ENV`:设置环境变量。 - `COPY`:复制文件或目录到容器中。 - `RUN`:运行命令。 例如,如果你想要将一个名为 `config.js` 的配置文件复制到容器中,可以使用以下指令: ```Dockerfile COPY config.js /path/to/container/config.js ``` 4. 保存 Dockerfile 文件。 5. 在命令行中,进入 Dockerfile 文件所在的目录,并执行以下命令来构建镜像: ```bash docker build -t my-mongodb:latest . ``` 这将使用 Dockerfile 构建一个名为 `my-mongodb` 的镜像,并且标记为 `latest` 版本。 6. 构建成功后,你可以使用以下命令来运行 MongoDB 容器: ```bash docker run -d --name my-mongodb-container -p 27017:27017 my-mongodb:latest ``` 这将在后台运行一个名为 `my-mongodb-container` 的容器,并将容器内的 MongoDB 服务端口映射到宿主机的 27017 端口。 现在,你已经成功制作了一个 MongoDBDocker 镜像,并且可以通过运行该镜像来创建和管理 MongoDB 容器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值