如何访问正在运行的 Docker Image 中的数据库

Posted

技术标签:

【中文标题】如何访问正在运行的 Docker Image 中的数据库【英文标题】:How to access database in the running Docker Image 【发布时间】:2021-08-28 06:56:35 【问题描述】:

Angular、Node.js、猫鼬、mongo

在 BE 我创建了一个 docker-compose.yml

version: "3"
services:
  mongodb:
    container_name: mongo_db
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - data:/data/db
volumes:
  data:

这是我的数据库/index.js

const db = require("mongoose");
const User = require("../models/User");
const dotenv = require("dotenv");

dotenv.config();

db.connect(
  process.env.DB_CONNECT, // mongodb://localhost:27017/playground
   useNewUrlParser: true ,
   useUnifiedTopology: true ,
   useCreateIndex: true 
)
  .then(() => console.log("connnected to db!"))
  .catch((err) => console.error(err));

当我在终端中运行“docker compose up”时 我可以看到创建的数据库,我可以看到图像正在运行。 我打开我的 Docker for Windows 应用程序,看到有我的图像。

现在我为用户创建了一个数据输入控制器 在邮递员中,我可以从图像中的用户表中检索所有实体

我的问题是如何直接在图片上找到那个表格?

【问题讨论】:

到目前为止你尝试过什么?你被困在哪里了?您的应用程序是否也在容器中运行? 您的问题到底是什么?你说你可以访问你的桌子,但你问如何找到桌子? 【参考方案1】:

打开 Power Shell 窗口

显示所有正在运行的容器:docker ps

找到你正在运行的容器(在我的例子中:“mongo_db”)

像这样在 bash 中打开容器:

docker exec -it mongo_db bash 

mongo             // opens mongo

show dbs          // shows all available databases (default: admin, config, local)

use playground    // this is my (see database/index.js file above)

show collections  // displays my users Table

db.users.find().pretty()  // displays all entities from the table

【讨论】:

以上是关于如何访问正在运行的 Docker Image 中的数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法访问在 Docker 中配置的 wordpress,即使其状态正在运行

Docker 进入运行中的image

怎么查看docker里image的ip

只查看正在运行的容器和docker主机做了哪些端口映射的命令

Docker,拒绝所有其他正在运行的服务的连接

如何运行docker mongo?