gpt4 book ai didi

mongodb - Docker为MongoDB ReplicaSet撰写

转载 作者:行者123 更新时间:2023-12-02 19:51:02 25 4
gpt4 key购买 nike

我一直在尝试对依赖于redis,kafka和mongodb的spring boot应用程序进行docker化。

以下是docker-compose.yml:

version: '3.3'
services:
my-service:
image: my-service
build:
context: ../../
dockerfile: Dockerfile
restart: always
container_name: my-service
environment:
KAFKA_CONFLUENT_BOOTSTRAP_SERVERS: kafka:9092
MONGO_HOSTS: mongodb:27017
REDIS_HOST: redis
REDIS_PORT: 6379

volumes:
- /private/var/log/my-service/:/var/log/my-service/
ports:
- 8080:8090
- 1053:1053

depends_on:
- redis
- kafka
- mongodb

portainer:
image: portainer/portainer
command: -H unix:///var/run/docker.sock
restart: always
container_name: portainer
ports:
- 9000:9000
- 9001:8000
volumes:
- /var/run/docker.sock:/var/run/docker.sock

redis:
image: redis
container_name: redis
restart: always
ports:
- 6379:6379

zookeeper:
image: wurstmeister/zookeeper
ports:
- 2181:2181
container_name: zookeeper

kafka:
image: wurstmeister/kafka
ports:
- 9092:9092
container_name: kafka
environment:
KAFKA_CREATE_TOPICS: "cms.entity.change:1:1" # topic:partition:replicas
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_PORT: 9092
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- "zookeeper"

mongodb:
image: mongo:latest
container_name: mongodb
environment:
MONGO_INITDB_ROOT_USERNAME:
MONGO_INITDB_ROOT_PASSWORD:
ports:
- 27017:27017
volumes:
- ./data/db:/data/db

问题在于,它会以 STANDALONE 实例的身份启动mongo。因此,我的服务中用于持久存储数据的API失败了,因为mongo需要以 REPLICA_SET 的身份启动。

我该如何编辑docker-compose文件以将REMOICA_SET作为mongo启动?

最佳答案

编辑:
我以前的答案很不对,所以我改变了它。我设法使它使用'bitnami/mongodb:4.0'。不知道这是否对您有帮助,但也许可以给您一些想法。他们已经准备好replicaset模式的docker-compose文件。

version: '3'

services:
mdb-primary:
image: 'bitnami/mongodb:4.0'
environment:
- MONGODB_REPLICA_SET_MODE=primary
- MONGODB_ROOT_PASSWORD=somepassword
- MONGODB_REPLICA_SET_KEY=replicasetkey
- MONGODB_ADVERTISED_HOSTNAME=mdb-primary

mdb-secondary:
image: 'bitnami/mongodb:4.0'
depends_on:
- mdb-primary
environment:
- MONGODB_PRIMARY_HOST=mdb-primary
- MONGODB_REPLICA_SET_MODE=secondary
- MONGODB_PRIMARY_ROOT_PASSWORD=somepassword
- MONGODB_REPLICA_SET_KEY=replicasetkey
- MONGODB_ADVERTISED_HOSTNAME=mdb-secondary

mdb-arbiter:
image: 'bitnami/mongodb:4.0'
depends_on:
- mdb-primary
environment:
- MONGODB_PRIMARY_HOST=mdb-primary
- MONGODB_REPLICA_SET_MODE=arbiter
- MONGODB_PRIMARY_ROOT_PASSWORD=somepassword
- MONGODB_REPLICA_SET_KEY=replicasetkey
- MONGODB_ADVERTISED_HOSTNAME=mdb-arbiter

mongo-cli:
image: 'bitnami/mongodb:latest'


不要忘记添加卷并将其映射到主节点上的 /bitnami
最后一个容器 mongo-cli用于测试。因此,您可以使用cli连接到副本集,如果您想阅读 here,则有一个参数。
$ docker-compose exec mongo-cli bash
$ mongo "mongodb://mdb-primary:27017/test?replicaSet=replicaset"

关于mongodb - Docker为MongoDB ReplicaSet撰写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60671005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com