如何访问正在运行的 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,即使其状态正在运行