testcontainers / testcontainers/testcontainers-java
Support init scripts for `MongoDBContainer` without manually customizing the `WaitStrategy`
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 8.7k
- Forks
- 1.9k
- Ø Merge
- 2 T. 17 Std.
- Gemergte PRs (30 T.)
- 9
Beschreibung
A container initialized as follows, fails to start:
MongoDBContainer c = new MongoDBContainer(MONGO_IMAGE)
.withEnv("MONGO_INITDB_ROOT_USERNAME", "root")
.withEnv("MONGO_INITDB_ROOT_PASSWORD", "password" )
.withFileSystemBind("init/mongo-init.js",
"/docker-entrypoint-initdb.d/mongo-init.js", BindMode.READ_ONLY)
;
c.start()
Not sure but probably because the docker-entrypoint.sh, in case of presence of init-db scripts, does a shutdown and a restart of the process after executing them:
if [ -n "$shouldPerformInitdb" ]; then
...
echo
for f in /docker-entrypoint-initdb.d/*; do
case "$f" in
*.sh) echo "$0: running $f"; . "$f" ;;
*.js) echo "$0: running $f"; "${mongo[@]}" "$MONGO_INITDB_DATABASE" "$f"; echo ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done
"${mongodHackedArgs[@]}" --shutdown
rm -f "$pidfile"
...
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, das MongoDBContainer-Beispiel mit dem Bind-Mount von init/mongo-init.js zu reproduzieren, und vergleiche sein Startverhalten mit dem Neustartablauf von docker-entrypoint.sh. Lies die Behandlung des Starts von MongoDBContainer und von WaitStrategy und überprüfe anschließend, dass ein Container mit /docker-entrypoint-initdb.d/mongo-init.js erfolgreich startet, ohne manuelle Anpassung von WaitStrategy.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java, mongodb
- Bereich
- database, testing
- Issue-Typ
- Feature
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 55/100