sql >> Databasteknik >  >> NoSQL >> MongoDB

Konfigurera flera Docker-behållare och MongoDB för att köras i CircleCI

Problemet är relaterat till ursprungsplatsen. Om du får åtkomst till localhost från insidan av en Docker-behållare, pekar den lokala värden på dockern själv, inte värdservern, och därför når samtalet inte värden eller de andra dockningsoperatörerna.

Om alla dina hamnarbetare är på samma värddator är det enklaste sättet att få dem att prata med varandra via localhost att dela ett nätverk mellan behållarna vid körning. Kör först backend normalt, starta sedan de andra behållarna med --net switch:

docker run [other params] -d -p 8080:8080 --name service-app-container service_app_image docker run [other params] -p 3000:3000 --net="container:service-app-container" --name client-app-container client_app_image

Nu bör alla portar som exponeras och mappas av någon av behållarna som delar nätverket vara tillgängliga under localhost från vilken som helst av hamnarbetarna.

  • För att komma åt service-app-behållaren var som helst, använd machine:8080.
  • För att komma åt den lokalt från värdservern, använd localhost:8080.
  • Använd locahost:8080 för att komma åt den internt från tjänsteappen.
  • För att komma åt tjänsteappen från klientappen, använd localhost:8080

Klientappen kommer bara att exponeras över port 3000 för världen om du också exponerar den i dockningsstationen som har behållaren. Den exponerade porten bör inte vara densamma eftersom detta förvirrar nätverket:

docker run [other params] -d -p 8080:8080 3001:3000 --name service-app-container service_app_image docker run [other params] -p 3000:3000 --net="container:service-app-container" client_app_image

Nu kunde du komma åt klientappen utifrån med hjälp av maskin:3001.




  1. Det går inte att installera mongodb på linux

  2. MongoDB Java Driver:MongoCore Driver vs. MongoDB Driver vs. MongoDB Async Driver

  3. Mappning av MongoDB-dokument till ärendeklass med typer men utan inbäddade dokument

  4. Multer - hur man hanterar filer med upload.fields() när filer har skickats