Skip to content

Commit 58bdba6

Browse files
authored
Merge pull request #227 from infosiftr/initdb-no-auth
Remove "--auth" and "--replSet" during initdb
2 parents 88f90f7 + 6c0cea7 commit 58bdba6

File tree

4 files changed

+115
-48
lines changed

4 files changed

+115
-48
lines changed

3.0/docker-entrypoint.sh

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,26 +94,45 @@ _mongod_hack_ensure_arg() {
9494
mongodHackedArgs+=( "$ensureArg" )
9595
fi
9696
}
97-
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
97+
# _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
9898
# set -- "${mongodHackedArgs[@]}"
99-
_mongod_hack_ensure_arg_val() {
100-
local ensureArg="$1"; shift
101-
local ensureVal="$1"; shift
99+
_mongod_hack_ensure_no_arg() {
100+
local ensureNoArg="$1"; shift
101+
mongodHackedArgs=()
102+
while [ "$#" -gt 0 ]; do
103+
local arg="$1"; shift
104+
if [ "$arg" = "$ensureNoArg" ]; then
105+
continue
106+
fi
107+
mongodHackedArgs+=( "$arg" )
108+
done
109+
}
110+
# _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
111+
# set -- "${mongodHackedArgs[@]}"
112+
_mongod_hack_ensure_no_arg_val() {
113+
local ensureNoArg="$1"; shift
102114
mongodHackedArgs=()
103115
while [ "$#" -gt 0 ]; do
104116
local arg="$1"; shift
105117
case "$arg" in
106-
"$ensureArg")
118+
"$ensureNoArg")
107119
shift # also skip the value
108120
continue
109121
;;
110-
"$ensureArg"=*)
122+
"$ensureNoArg"=*)
111123
# value is already included
112124
continue
113125
;;
114126
esac
115127
mongodHackedArgs+=( "$arg" )
116128
done
129+
}
130+
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
131+
# set -- "${mongodHackedArgs[@]}"
132+
_mongod_hack_ensure_arg_val() {
133+
local ensureArg="$1"; shift
134+
local ensureVal="$1"; shift
135+
_mongod_hack_ensure_no_arg_val "$ensureArg" "$@"
117136
mongodHackedArgs+=( "$ensureArg" "$ensureVal" )
118137
}
119138

@@ -214,6 +233,13 @@ if [ "$originalArgOne" = 'mongod' ]; then
214233
_mongod_hack_ensure_arg_val --bind_ip 127.0.0.1 "${mongodHackedArgs[@]}"
215234
_mongod_hack_ensure_arg_val --port 27017 "${mongodHackedArgs[@]}"
216235

236+
# remove "--auth" and "--replSet" for our initial startup (see https://docs.mongodb.com/manual/tutorial/enable-authentication/#start-mongodb-without-access-control)
237+
# https://github.com/docker-library/mongo/issues/211
238+
_mongod_hack_ensure_no_arg --auth "${mongodHackedArgs[@]}"
239+
if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then
240+
_mongod_hack_ensure_no_arg_val --replSet "${mongodHackedArgs[@]}"
241+
fi
242+
217243
sslMode="$(_mongod_hack_have_arg '--sslPEMKeyFile' "$@" && echo 'allowSSL' || echo 'disabled')" # "BadValue: need sslPEMKeyFile when SSL is enabled" vs "BadValue: need to enable SSL via the sslMode flag when using SSL configuration parameters"
218244
_mongod_hack_ensure_arg_val --sslMode "$sslMode" "${mongodHackedArgs[@]}"
219245

@@ -271,12 +297,6 @@ if [ "$originalArgOne" = 'mongod' ]; then
271297
roles: [ { role: 'root', db: $(_js_escape "$rootAuthDatabase") } ]
272298
})
273299
EOJS
274-
275-
mongo+=(
276-
--username="$MONGO_INITDB_ROOT_USERNAME"
277-
--password="$MONGO_INITDB_ROOT_PASSWORD"
278-
--authenticationDatabase="$rootAuthDatabase"
279-
)
280300
fi
281301

282302
export MONGO_INITDB_DATABASE="${MONGO_INITDB_DATABASE:-test}"

3.2/docker-entrypoint.sh

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,26 +94,45 @@ _mongod_hack_ensure_arg() {
9494
mongodHackedArgs+=( "$ensureArg" )
9595
fi
9696
}
97-
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
97+
# _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
9898
# set -- "${mongodHackedArgs[@]}"
99-
_mongod_hack_ensure_arg_val() {
100-
local ensureArg="$1"; shift
101-
local ensureVal="$1"; shift
99+
_mongod_hack_ensure_no_arg() {
100+
local ensureNoArg="$1"; shift
101+
mongodHackedArgs=()
102+
while [ "$#" -gt 0 ]; do
103+
local arg="$1"; shift
104+
if [ "$arg" = "$ensureNoArg" ]; then
105+
continue
106+
fi
107+
mongodHackedArgs+=( "$arg" )
108+
done
109+
}
110+
# _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
111+
# set -- "${mongodHackedArgs[@]}"
112+
_mongod_hack_ensure_no_arg_val() {
113+
local ensureNoArg="$1"; shift
102114
mongodHackedArgs=()
103115
while [ "$#" -gt 0 ]; do
104116
local arg="$1"; shift
105117
case "$arg" in
106-
"$ensureArg")
118+
"$ensureNoArg")
107119
shift # also skip the value
108120
continue
109121
;;
110-
"$ensureArg"=*)
122+
"$ensureNoArg"=*)
111123
# value is already included
112124
continue
113125
;;
114126
esac
115127
mongodHackedArgs+=( "$arg" )
116128
done
129+
}
130+
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
131+
# set -- "${mongodHackedArgs[@]}"
132+
_mongod_hack_ensure_arg_val() {
133+
local ensureArg="$1"; shift
134+
local ensureVal="$1"; shift
135+
_mongod_hack_ensure_no_arg_val "$ensureArg" "$@"
117136
mongodHackedArgs+=( "$ensureArg" "$ensureVal" )
118137
}
119138

@@ -214,6 +233,13 @@ if [ "$originalArgOne" = 'mongod' ]; then
214233
_mongod_hack_ensure_arg_val --bind_ip 127.0.0.1 "${mongodHackedArgs[@]}"
215234
_mongod_hack_ensure_arg_val --port 27017 "${mongodHackedArgs[@]}"
216235

236+
# remove "--auth" and "--replSet" for our initial startup (see https://docs.mongodb.com/manual/tutorial/enable-authentication/#start-mongodb-without-access-control)
237+
# https://github.com/docker-library/mongo/issues/211
238+
_mongod_hack_ensure_no_arg --auth "${mongodHackedArgs[@]}"
239+
if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then
240+
_mongod_hack_ensure_no_arg_val --replSet "${mongodHackedArgs[@]}"
241+
fi
242+
217243
sslMode="$(_mongod_hack_have_arg '--sslPEMKeyFile' "$@" && echo 'allowSSL' || echo 'disabled')" # "BadValue: need sslPEMKeyFile when SSL is enabled" vs "BadValue: need to enable SSL via the sslMode flag when using SSL configuration parameters"
218244
_mongod_hack_ensure_arg_val --sslMode "$sslMode" "${mongodHackedArgs[@]}"
219245

@@ -271,12 +297,6 @@ if [ "$originalArgOne" = 'mongod' ]; then
271297
roles: [ { role: 'root', db: $(_js_escape "$rootAuthDatabase") } ]
272298
})
273299
EOJS
274-
275-
mongo+=(
276-
--username="$MONGO_INITDB_ROOT_USERNAME"
277-
--password="$MONGO_INITDB_ROOT_PASSWORD"
278-
--authenticationDatabase="$rootAuthDatabase"
279-
)
280300
fi
281301

282302
export MONGO_INITDB_DATABASE="${MONGO_INITDB_DATABASE:-test}"

3.4/docker-entrypoint.sh

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,26 +94,45 @@ _mongod_hack_ensure_arg() {
9494
mongodHackedArgs+=( "$ensureArg" )
9595
fi
9696
}
97-
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
97+
# _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
9898
# set -- "${mongodHackedArgs[@]}"
99-
_mongod_hack_ensure_arg_val() {
100-
local ensureArg="$1"; shift
101-
local ensureVal="$1"; shift
99+
_mongod_hack_ensure_no_arg() {
100+
local ensureNoArg="$1"; shift
101+
mongodHackedArgs=()
102+
while [ "$#" -gt 0 ]; do
103+
local arg="$1"; shift
104+
if [ "$arg" = "$ensureNoArg" ]; then
105+
continue
106+
fi
107+
mongodHackedArgs+=( "$arg" )
108+
done
109+
}
110+
# _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
111+
# set -- "${mongodHackedArgs[@]}"
112+
_mongod_hack_ensure_no_arg_val() {
113+
local ensureNoArg="$1"; shift
102114
mongodHackedArgs=()
103115
while [ "$#" -gt 0 ]; do
104116
local arg="$1"; shift
105117
case "$arg" in
106-
"$ensureArg")
118+
"$ensureNoArg")
107119
shift # also skip the value
108120
continue
109121
;;
110-
"$ensureArg"=*)
122+
"$ensureNoArg"=*)
111123
# value is already included
112124
continue
113125
;;
114126
esac
115127
mongodHackedArgs+=( "$arg" )
116128
done
129+
}
130+
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
131+
# set -- "${mongodHackedArgs[@]}"
132+
_mongod_hack_ensure_arg_val() {
133+
local ensureArg="$1"; shift
134+
local ensureVal="$1"; shift
135+
_mongod_hack_ensure_no_arg_val "$ensureArg" "$@"
117136
mongodHackedArgs+=( "$ensureArg" "$ensureVal" )
118137
}
119138

@@ -214,6 +233,13 @@ if [ "$originalArgOne" = 'mongod' ]; then
214233
_mongod_hack_ensure_arg_val --bind_ip 127.0.0.1 "${mongodHackedArgs[@]}"
215234
_mongod_hack_ensure_arg_val --port 27017 "${mongodHackedArgs[@]}"
216235

236+
# remove "--auth" and "--replSet" for our initial startup (see https://docs.mongodb.com/manual/tutorial/enable-authentication/#start-mongodb-without-access-control)
237+
# https://github.com/docker-library/mongo/issues/211
238+
_mongod_hack_ensure_no_arg --auth "${mongodHackedArgs[@]}"
239+
if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then
240+
_mongod_hack_ensure_no_arg_val --replSet "${mongodHackedArgs[@]}"
241+
fi
242+
217243
sslMode="$(_mongod_hack_have_arg '--sslPEMKeyFile' "$@" && echo 'allowSSL' || echo 'disabled')" # "BadValue: need sslPEMKeyFile when SSL is enabled" vs "BadValue: need to enable SSL via the sslMode flag when using SSL configuration parameters"
218244
_mongod_hack_ensure_arg_val --sslMode "$sslMode" "${mongodHackedArgs[@]}"
219245

@@ -271,12 +297,6 @@ if [ "$originalArgOne" = 'mongod' ]; then
271297
roles: [ { role: 'root', db: $(_js_escape "$rootAuthDatabase") } ]
272298
})
273299
EOJS
274-
275-
mongo+=(
276-
--username="$MONGO_INITDB_ROOT_USERNAME"
277-
--password="$MONGO_INITDB_ROOT_PASSWORD"
278-
--authenticationDatabase="$rootAuthDatabase"
279-
)
280300
fi
281301

282302
export MONGO_INITDB_DATABASE="${MONGO_INITDB_DATABASE:-test}"

3.6/docker-entrypoint.sh

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,26 +107,32 @@ _mongod_hack_ensure_no_arg() {
107107
mongodHackedArgs+=( "$arg" )
108108
done
109109
}
110-
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
110+
# _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
111111
# set -- "${mongodHackedArgs[@]}"
112-
_mongod_hack_ensure_arg_val() {
113-
local ensureArg="$1"; shift
114-
local ensureVal="$1"; shift
112+
_mongod_hack_ensure_no_arg_val() {
113+
local ensureNoArg="$1"; shift
115114
mongodHackedArgs=()
116115
while [ "$#" -gt 0 ]; do
117116
local arg="$1"; shift
118117
case "$arg" in
119-
"$ensureArg")
118+
"$ensureNoArg")
120119
shift # also skip the value
121120
continue
122121
;;
123-
"$ensureArg"=*)
122+
"$ensureNoArg"=*)
124123
# value is already included
125124
continue
126125
;;
127126
esac
128127
mongodHackedArgs+=( "$arg" )
129128
done
129+
}
130+
# _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
131+
# set -- "${mongodHackedArgs[@]}"
132+
_mongod_hack_ensure_arg_val() {
133+
local ensureArg="$1"; shift
134+
local ensureVal="$1"; shift
135+
_mongod_hack_ensure_no_arg_val "$ensureArg" "$@"
130136
mongodHackedArgs+=( "$ensureArg" "$ensureVal" )
131137
}
132138

@@ -228,6 +234,13 @@ if [ "$originalArgOne" = 'mongod' ]; then
228234
_mongod_hack_ensure_arg_val --port 27017 "${mongodHackedArgs[@]}"
229235
_mongod_hack_ensure_no_arg --bind_ip_all "${mongodHackedArgs[@]}"
230236

237+
# remove "--auth" and "--replSet" for our initial startup (see https://docs.mongodb.com/manual/tutorial/enable-authentication/#start-mongodb-without-access-control)
238+
# https://github.com/docker-library/mongo/issues/211
239+
_mongod_hack_ensure_no_arg --auth "${mongodHackedArgs[@]}"
240+
if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then
241+
_mongod_hack_ensure_no_arg_val --replSet "${mongodHackedArgs[@]}"
242+
fi
243+
231244
sslMode="$(_mongod_hack_have_arg '--sslPEMKeyFile' "$@" && echo 'allowSSL' || echo 'disabled')" # "BadValue: need sslPEMKeyFile when SSL is enabled" vs "BadValue: need to enable SSL via the sslMode flag when using SSL configuration parameters"
232245
_mongod_hack_ensure_arg_val --sslMode "$sslMode" "${mongodHackedArgs[@]}"
233246

@@ -285,12 +298,6 @@ if [ "$originalArgOne" = 'mongod' ]; then
285298
roles: [ { role: 'root', db: $(_js_escape "$rootAuthDatabase") } ]
286299
})
287300
EOJS
288-
289-
mongo+=(
290-
--username="$MONGO_INITDB_ROOT_USERNAME"
291-
--password="$MONGO_INITDB_ROOT_PASSWORD"
292-
--authenticationDatabase="$rootAuthDatabase"
293-
)
294301
fi
295302

296303
export MONGO_INITDB_DATABASE="${MONGO_INITDB_DATABASE:-test}"

0 commit comments

Comments
 (0)