@@ -50,40 +50,49 @@ services:
50
50
- 3306:3306
51
51
52
52
mongo :
53
- image : bitnami/mongodb:7.0
53
+ image : mongo:7
54
54
environment :
55
- MONGO_INITDB_ROOT_USERNAME : root
56
- MONGO_INITDB_ROOT_PASSWORD : secret
57
- MONGODB_ROOT_PASSWORD : secret
58
- MONGODB_REPLICA_SET_NAME : openconext
59
- MONGODB_REPLICA_SET_MODE : primary
60
- MONGODB_REPLICA_SET_KEY : secretsecret
61
- MONGODB_ADVERTISED_HOSTNAME : mongodb
62
- # Force QEMU emulation instead of Rosetta for x86_64 Apple Silicon Macs.
63
- # Rosetta does not support AVX instructions, which this MongoD image requires, causing an
64
- # "Illegal instruction" error when starting the container:
65
- # /opt/bitnami/scripts/libos.sh: line 346: 50 Illegal instruction "$@" > /dev/null 2>&1
66
- EXPERIMENTAL_DOCKER_DESKTOP_FORCE_QEMU : 1
55
+ MONGO_INITDB_ROOT_USERNAME : ${MONGODB_USERNAME:-root}
56
+ MONGO_INITDB_ROOT_PASSWORD : ${MONGODB_PASSWORD:-secret}
57
+ MONGO_REPLICA_SET_NAME : ${MONGODB_RS_NAME:-openconext}
67
58
volumes :
68
59
- ./mongo/:/docker-entrypoint-initdb.d/
69
- - openconext_mongodb:/bitnami/mongodb
60
+ - openconext_mongodb:/data/db
70
61
healthcheck :
71
- test :
72
- [
73
- " CMD" ,
74
- " mongosh" ,
75
- " -u" ,
76
- " managerw" ,
77
- " -p" ,
78
- " secret" ,
79
- " --eval" ,
80
- " db.stats().ok" ,
81
- " mongodb://127.0.0.1/manage" ,
82
- ]
83
- interval : 10s
84
- timeout : 10s
85
- retries : 3
86
- start_period : 20s
62
+ test : |
63
+ # After starting, but before being used, we need to initialize the Mongo replication set
64
+ # we abuse the healthcheck for that, because we need to check the health status anyway
65
+ mongosh -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --eval '
66
+ try {
67
+ rs.status().ok;
68
+ }
69
+ catch ({ name, message }) {
70
+ print("error:" + name);
71
+ print("message:" + message);
72
+ if (name=="MongoServerError" && message.includes("no replset config has been received")) {
73
+ rs.initiate({
74
+ _id : "${MONGODB_RS_NAME:-openconext}",
75
+ members: [ { _id: 0, host: "mongodb:27017" } ]
76
+ });
77
+ rs.status().ok;
78
+ }
79
+ };
80
+ '
81
+ interval : 2s
82
+ timeout : 3s
83
+ retries : 5
84
+ entrypoint : >
85
+ bash -c '
86
+ openssl rand -base64 756 > /keyfile \
87
+ && chown mongodb:mongodb /keyfile \
88
+ && chmod 400 /keyfile \
89
+ && exec docker-entrypoint.sh $$@
90
+ '
91
+ command : |
92
+ mongod --bind_ip_all --replSet ${MONGODB_RS_NAME:-openconext} --keyFile /keyfile
93
+ restart : always
94
+ ports :
95
+ - " 27017:27017"
87
96
networks :
88
97
coreconextdev :
89
98
hostname : mongodb
0 commit comments