類似于無法從其他 Docker 容器連接到 MongoDB 容器- 但這篇文章的答案對我不起作用。
我是 Docker 的新手。嘗試在 typescript/express/mongo/mongoose api 示例上學習它。
我正在嘗試做的(并且遇到問題)是在運行的 mongo 容器使用docker compose up. 盡管我的資料很好地保存在 Docker 卷上,但我似乎無法使用 cmd 行登錄到資料庫。
這是我的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 運行得很好。
uj5u.com熱心網友回復:
列出資料庫需要身份驗證
docker exec -it mongo_container mongo -u myself -p pass123
現在您可以列出資料庫
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
注意:mongo 應該向您顯示“mongo”外殼已被“mongosh”取代的警告。當您使用 mongosh 時,將在資料庫串列嘗試中顯示正確的身份驗證錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383896.html
