簡體   English   中英

無法使用 docker 創建 mongo 數據庫

[英]Cannot create a mongo database with docker

我在使用 docker-compose 命令創建 mongo 數據庫時遇到問題。 Docker 桌面告訴我一切都已啟動並正在運行,包括數據庫,但我得到的只是標准的“管理員、配置、本地”而不是我想要創建的數據庫。 這是我的 docker-compose.yaml

version: '3'

services:

  app:
    build: ./
    entrypoint: ./.docker/entrypoint.sh
    ports:
    - 3000:3000
    volumes:
    - .:/home/node/app
    depends_on:
    - db

  db:
    image: mongo:4.4.4
    restart: always
    volumes:
      - ./.docker/dbdata:/data/db
      - ./.docker/mongo:/docker-entrypoint-initdb.d
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=root
      - MONGO_INITDB_DATABASE=nest
  
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      - ME_CONFIG_MONGODB_SERVER=db
      - ME_CONFIG_MONGODB_AUTH_USERNAME=root
      - ME_CONFIG_MONGODB_AUTH_PASSWORD=root
      - ME_CONFIG_MONGODB_ADMINUSERNAME=root
      - ME_CONFIG_MONGODB_ADMINPASSWORD=root
    depends_on:
    - db

我在 .docker/mongo 中的 init.js

db.routes.insertMany([
  {
    _id: "1",
    title: "Primeiro",
    startPosition: {lat: -15.82594, lng: -47.92923},
    endPosition: {lat: -15.82942, lng: -47.92765},
  },
  {
    _id: "2",
    title: "Segundo",
    startPosition: {lat: -15.82449, lng: -47.92756},
    endPosition: {lat: -15.82776, lng: -47.92621},
  },
  {
    _id: "3",
    title: "Terceiro",
    startPosition: {lat: -15.82331, lng: -47.92588},
    endPosition: {lat: -15.82758, lng: -47.92532},
  }
]);

和我的 dockerfile

FROM node:14.18.1-alpine

RUN apk add --no-cache bash

RUN npm install -g @nestjs/cli

USER node

WORKDIR /home/node/app


這是我在使用 mongodb、nest app 和 mongo express 運行嵌套容器時從 docker 得到的“錯誤”日志(實際上還有很多,但由於某種原因一直認為它是垃圾郵件。

about to fork child process, waiting until server is ready for connections.


Successfully added user: {

"user" : "root",

"roles" : [

{

"role" : "root",

"db" : "admin"

}

]

}

Error saving history file: FileOpenFailed Unable to open() file /home/mongodb/.dbshell: No such file or directory

{"t":{"$date":"2022-06-01T19:39:15.542+00:00"},"s":"I",  "c":"NETWORK",  "id":22944,   "ctx":"conn2","msg":"Connection ended","attr":{"remote":"127.0.0.1:39304","connectionId":2,"connectionCount":0}}


/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/init.js

{"t":{"$date":"2022-06-01T19:39:15.683+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"127.0.0.1:39310","connectionId":3,"connectionCount":1}}

{"t":{"$date":"2022-06-01T19:39:15.684+00:00"},"s":"I",  "c":"NETWORK",  "id":51800,   "ctx":"conn3","msg":"client metadata","attr":{"remote":"127.0.0.1:39310","client":"conn3","doc":{"application":{"name":"MongoDB Shell"},"driver":{"name":"MongoDB Internal Client","version":"4.4.4"},"os":{"type":"Linux","name":"Ubuntu","architecture":"x86_64","version":"18.04"}}}}

{"t":{"$date":"2022-06-01T19:39:15.701+00:00"},"s":"I",  "c":"STORAGE",  "id":20320,   "ctx":"conn3","msg":"createCollection","attr":{"namespace":"nest.routes","uuidDisposition":"generated","uuid":{"uuid":{"$uuid":"f689868e-af6d-4ec6-b555-dcf520f24788"}},"options":{}}}

{"t":{"$date":"2022-06-01T19:39:15.761+00:00"},"s":"I",  "c":"INDEX",    "id":20345,   "ctx":"conn3","msg":"Index build: done building","attr":{"buildUUID":null,"namespace":"nest.routes","index":"_id_","commitTimestamp":{"$timestamp":{"t":0,"i":0}}}}

uncaught exception: ReferenceError: colection is not defined :

@/docker-entrypoint-initdb.d/init.js:23:1

failed to load: /docker-entrypoint-initdb.d/init.js

exiting with code -3



這就是運行 docker-compose ps 顯示的內容

NAME                       COMMAND                  SERVICE             STATUS              PORTS     
nest-api-app-1             "./.docker/entrypoin…"   app                 running             0.0.0.0:3000->3000/tcp
nest-api-db-1              "docker-entrypoint.s…"   db                  running             27017/tcp 
nest-api-mongo-express-1   "tini -- /docker-ent…"   mongo-express       running             0.0.0.0:8081->8081/tcp

這是我的 docker 桌面顯示的

MongoDB 容器僅在不存在數據庫時才創建數據庫。 您可能已經有了一個,這就是為什么沒有創建新數據庫並且沒有運行初始化腳本的原因。

刪除主機上./.docker/dbdata的內容。 然后使用 docker-compose 啟動容器,Mongo 應該會為您創建數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM