- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试使用 M1 芯片将我的 Node 容器连接到我的 Mongo 容器。许多人说您不能在 M1 Mac 上运行 Mongo 4.9+,因为它不支持 AVR。我不能说为什么,但在我的 M1 mongo 上运行得很好。我可以使用 mongo://mongo:27017 通过 Mongo Compass 连接到容器。此外,如果我在 docker 之外运行我的 Node 应用程序,我可以使用相同的连接字符串连接到 Mongo 容器。但出于某种原因,我无法将容器化 Node 应用程序连接到容器化 Mongo 服务。
docker 文件
FROM node:12
# Create app directory
WORKDIR /usr/src/app
# Copy dependencies
COPY package*.json ./
# Install dependencies
RUN npm install
RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]
docker-compose.yml
version: "2"
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- mongo
mongo:
image: mongo
ports:
- "27017:27017"
连接方式
/* Mongoose Connection */
const mongoose = require('mongoose')
mongoose.Promise = global.Promise
mongoose.connect(
'mongodb://mongo:27017',
{ useNewUrlParser: true }
)
mongoose.connection.on('error', console.error.bind(console, 'MongoDB connection
错误:'))
mongoose.set('debug', true)
module.exports = mongoose.connection
服务器.js
require('dotenv').config();
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const expressValidator = require('express-validator')
var cookieParser = require('cookie-parser');
const jwt = require('jsonwebtoken');
app.use(cookieParser()); // Add this after you initialize express.
// db
require('./data/reddit-db')
// set db
const exphbs = require('express-handlebars')
// body parser
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(expressValidator())
app.engine('handlebars', exphbs({ defaultLayout: 'main' }))
app.set('view engine', 'handlebars')
var checkAuth = (req, res, next) => {
console.log("Checking authentication");
if (typeof req.cookies.nToken === "undefined" || req.cookies.nToken === null) {
req.user = null;
} else {
var token = req.cookies.nToken;
var decodedToken = jwt.decode(token, { complete: true }) || {};
req.user = decodedToken.payload;
}
next();
};
app.use(checkAuth);
// routes
require('./controllers/posts.js')(app)
require('./controllers/comments.js')(app)
require('./controllers/auth.js')(app)
require('./controllers/replies.js')(app)
// Start Server
app.listen(3000, () => {
console.log('Reddit Search listening on port localhost:3000!');
});
module.exports = app
错误
redditjspart2-web-1 | Reddit Search listening on port localhost:3000!
redditjspart2-web-1 | MongoDB connection Error: { MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
redditjspart2-web-1 | at Pool.<anonymous> (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/topologies/server.js:438:11)
redditjspart2-web-1 | at Pool.emit (events.js:198:13)
redditjspart2-web-1 | at createConnection (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:561:14)
redditjspart2-web-1 | at connect (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/pool.js:994:11)
redditjspart2-web-1 | at makeConnection (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:31:7)
redditjspart2-web-1 | at callback (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:264:5)
redditjspart2-web-1 | at Socket.err (/usr/src/app/node_modules/mongoose/node_modules/mongodb/lib/core/connection/connect.js:294:7)
redditjspart2-web-1 | at Object.onceWrapper (events.js:286:20)
redditjspart2-web-1 | at Socket.emit (events.js:198:13)
redditjspart2-web-1 | at emitErrorNT (internal/streams/destroy.js:91:8)
redditjspart2-web-1 | at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
redditjspart2-web-1 | at process._tickCallback (internal/process/next_tick.js:63:19)
redditjspart2-web-1 | name: 'MongoNetworkError',
redditjspart2-web-1 | [Symbol(mongoErrorContextSymbol)]: {} }
我尝试过的:
错误表明它正在尝试连接到 127.0.0.1:27017,这意味着它正在正确解析主机名并将其映射到我的本地主机。所以Node容器是肯定能找到的。这也是有道理的,因为我仍然可以像前面提到的那样从 Node 容器 ping Mongo 容器。看起来 Mongo 只是出于某种原因拒绝连接。
我真的很难弄清楚为什么会这样。我的 repo 的链接是公开的,你可以在 github 上找到它:https://github.com/lukeaparker/reddit.jspart2
非常感谢!!
最佳答案
我在 M1 Mac 上遇到了类似的问题,并通过将这些配置放入 docker-compose.yml 中设法解决了这个问题:
services:
mongodb:
image: arm64v8/mongo:4.0
platform: linux/arm64/v8
我还通过 CLI 使用 docker build --platform linux/arm64/v8
和 docker run --platform linux/arm64/v8
来实现平台明确性,因为我得到了这个先前警告:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
关于node.js - 无法从 M1 Mac 上的 Node 容器连接到 Mongo Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72122341/
在过去的几个月里,我一直在研究 Haskell,我遇到了一个我不太确定如何处理的单子(monad)的情况。 我有一个 a -> m a 类型的值第二个类型为 m (a -> a)我需要对它们进行组合,
仿函数有 (a -> b) -> m a -> m b 应用程序有 f (a -> b) -> f a -> f b Monad 有 m a -> (a -> m b) -> m b 但是,是否有扩展
我是 Haskell 的新手,我想知道是否有比 Hoogle 更好的方法来确定一个库功能是否重复? 举个例子:我有很多函数f :: Monad a => a -> m a我想链接在一起,比如 f123
将存储在一系列列表中的 m、m、n 维数组组合成一个 m、m、n 维数组的方法是什么? 示例: 这是三个包含 m,m,n 维数组的列表: list1 <- array (1, dim = c(5, 5
有没有办法写一个函数f::(a -> b -> ... -> t) -> (Monad m => m a -> m b -> ... -> m t ),基本上是 liftMn 对于任何 n? (编辑:
我有一个像这样的 pandas 数据框: df = pd.DataFrame({'A':[1,3,2,9],'B':[2,1,2,7],'C':[7,2,4,6],'D':[8,1,6,4]},ind
这个问题来自文章“Trivial Monad”,地址:http://blog.sigfpe.com/2007/04/trivial-monad.html 。提供的答案是 h x y = x >>= (
所以>>= :: m a -> (a -> m b) -> m b和>> :: m a -> m b -> m b . 而 f b -> f a . 但我想要一些能m a -> (a -> m b)
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 3 年前。 Improve
当我安装 rakudo来源: $ git clone git@github.com:rakudo/rakudo.git $ cd rakudo $ perl Configure.pl --gen-mo
我正在尝试通过查看一些练习来提高我的 Idris 技能 Software Foundations (最初是为 Coq 设计的,但我希望对 Idris 的翻译不会太糟糕)。我在使用 "Exercise:
我想知道以下是否可行。 与服务器交换密码时,应保护密码。因此,用户可以使用生成的 key kUser 来加密密码。 Encrypt(m, kUser) 生成加密消息 eU(m)。现在用户将此信息发送到
这两个表之间存在什么样的关系(1:1、1:m、m:m,等等)? CREATE TABLE IF NOT EXISTS `my_product` ( `id` int(11) NOT NULL au
有人可以解释类型的含义以及如何实现吗? class Foldable f where foldMap :: (Monoid m) => (a -> m) -> f a -> m 基于 https:
例如,在 MVC 应用程序中,我可以使用 Html 助手来创建这样的标签: @Html.LabelFor(m => m.ProductName) 我没有在任何地方声明变量“m”,但 IDE 会自动找出
更新:澄清、更明确的重点和缩短的示例: 我可以避免 M op+(M&&,M&&) 过载吗?假设,我想很好地处理 RValues?我想其他三个重载是必需的。 我首先使用 (&&,&&) 重载的原因: 通
假设我有一个函数,它接受两个向量并返回一个整数,例如一个向量中也存在另一个向量中的元素数量。喜欢: f m [,1] [,2] [,3] [1,] "c" "i" "c" [2,] "
我想将字符串(字幕)转换为: 585 00:59:59,237 --> 01:00:01,105 - It's all right. - He saw us! 586 01:00:01,139 -->
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
是否可以将 Linux 中的大文件将 d.m.Y h:m:s 转换为 Y-d-m h:m:s? 示例数据 "30.07.2016 00:00:00",DN123,PAPN,PAPN,TEST,9189
我是一名优秀的程序员,十分优秀!