无法使用 docker 创建 mongo 数据库

卢卡斯·戈麦斯

我在使用 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 应该会为您创建数据库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用默认的PostgreSQL Docker映像创建数据库

无法使用 postgres 和 docker 创建数据库

无法通过Mongo罗盘创建数据库

无法在 mongo 数据库中创建表的架构

如何使用Python动态创建mongo数据库的名称?

使用mongo命令创建MongoDB数据库

如何使用docker-compose播种mongo数据库?

Mongo数据库在使用docker时断开连接

无法使用mysql docker容器在docker-entrypoint-initdb.d中创建数据库

使用Docker使用Django创建mysql数据库

如何完全销毁docker-compose创建的Mongo数据库?

使用Django项目在Docker中创建Postgresql数据库

使用MySQL / MariaDB数据库创建Docker容器

无法访问使用Docker映像创建的MySQL数据库

如何使用默认集合和数据创建Mongo Docker映像?

无法使用psql创建数据库

如何使用数据库用户和密码启动mongo docker映像

Docker-冻结数据库创建

在 docker 容器中使用创建的用户连接到创建的数据库

本地数据库无法使用 mongo localhost

Docker组成了postgresql服务-构建期间无法创建用户和数据库吗?

无法在Docker容器启动时创建Mongodb数据库

postgres和docker-compose:无法创建自定义角色和数据库

Docker Postgres启动自动化由于错误而无法创建数据库

运行 docker-compose.yml 时无法创建数据库

无法删除数据库或创建数据库

使用数据库指定时,Docker mysql容器不使用密码创建用户

生成jwt令牌以在mongo中创建数据库-Azure

转储在Docker容器上运行的mongo数据库