类似于无法从其他Docker容器连接到MongoDB容器,但这篇文章的答案对我来说并不适用。
我是Docker的新手。尝试在typescript/express/mongo/mongoose api示例中学习它。
我正在尝试做的(并且遇到问题)是在运行的mongo容器上使用mongo cmd line,在它使用docker compose up
旋转后。即使我的数据很好地保存在Docker卷上,我似乎无法使用cmd line登录数据库。
这是我的docker compose。yml文件:
version: '3.9'
services:
api:
container_name: api_ts
build: .
restart: unless-stopped
environment:
- DB_URL=mongodb://myself:pass123@mongo:27017/
ports:
- '3131:3131'
depends_on:
- mongo
links: # (seems to be needed)
- mongo
mongo:
container_name: mongo_container
image: mongo:latest
restart: always
volumes:
- mongo_dbv:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=myself
- MONGO_INITDB_ROOT_PASSWORD=pass123
ports:
- '27017:27017'
volumes:
mongo_dbv: {}
这是我的Dockerfile:
FROM node:alpine
WORKDIR /usr/src/app
COPY package*.json .
RUN npm ci
COPY . .
ENV PORT=3131
EXPOSE 3131
COPY .env ./dist
CMD ["npm", "start"]
我正在跑步
docker compose up -d --build
两个服务都准备好后,我做:
docker exec -it mongo_container mongo
show dbs
...最后一个cmd的输出为空
(在尝试按照上述帖子中的答案进行操作时也会发生同样的情况)
我确信数据库包含数据,因为我可以使用REST客户端对其进行验证。
此外,我有点困惑——也许这有点关联——为什么在docker compose中都没有任何迹象。yml或Dockerfile中,我正在使用的数据库名称。我希望它是show dbs输出的一部分。尽管如此,我的api运行良好。
列出数据库需要身份验证
docker exec -it mongo_container mongo -u myself -p pass123
现在您可以列出数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
注意:mongo应该向您显示“mongo”shell已被“mongonh”取代的警告。当您使用mongonh时,数据库列表尝试中将显示正确的身份验证错误。
问题内容: 这是我的docker-compose文件: 这是我的entrypoint_mongo.sh 我面临的问题是:mongo容器正在成功执行所有步骤,但是退出时的状态为0。 问题答案: 您的启动脚本不应初始化或监视副本集。这些应该是手动任务。 您应该记住: 严格来说,启动副本集是一次性的工作;一旦启动,MongoDB服务在重新启动后将继续成为同一副本集的一部分。 副本集通常包含多个应可互换的
问题内容: 我无法在Docker容器中运行任何yum命令,而没有出现以下错误: 我很困惑,因为我非常确定docker容器是使用默认用户root运行的。不过,如果我尝试将sudo放在a 或command 前面,则会得到: 我正在使用以下基本映像,以便可以在Docker中轻松运行Java Wildfly应用程序:https ://hub.docker.com/r/jboss/wildfly/ 底层发行
我如何访问Docker使用RoboMongo或类似工具创建的mongo数据库? 在使用Doncker之前,我已经在Linux机器上安装了mongodb。所以我不能在docker compse中使用端口“27017:27017”。yml。我使用“27018:27018”: 我可以使用RoboMongo查看我在预docker mongo中创建的所有数据库。但是我怎样才能进入码头工人的房间呢? 这是我的
问题内容: 有什么办法可以查看已退出的容器的日志? 我可以使用来获取已退出容器的容器ID,但是我想知道它在运行时发生了什么。 问题答案: 使用。它也适用于停止的容器,并捕获容器主过程的整个STDOUT和STDERR流:
我最担心的情况发生了:我的纯数据docker容器突然是空的。 这并不严重:这是一台开发机器,我有备份。但我最害怕的是,因为我知道我对Docker的理解仍然存在漏洞。 我在这个答案中读到了以下内容: Docker容器将一直保留在磁盘上,直到使用Docker rm显式删除它们。 以下是我感兴趣的容器(来自命令): 我有一个1)一个引用纯数据容器的mongo容器和2)纯数据容器本身。我最近在引用纯数据容
问题内容: 最近,我在Oracle Linux上安装了Docker CE。 不幸的是,当我想用以下方法启动第一个容器时: 我收到此错误消息: 泊坞窗:来自守护程序的错误响应:OCI运行时创建失败:container_linux.go:345:启动容器进程导致“ process_linux.go:430:容器初始化引起了\“ write / proc / self / attr / keycre