尝试通过Docker Compose将NodeJS应用程序连接到MongoDB

时间:2017-11-18 17:20:26

标签: mongodb docker docker-compose dockerfile

我正在使用我的应用程序跟踪MongoDB + NodeJS教程。一切都可以在没有Docker的情况下运行..事实上,我可以让应用程序在需要连接到MongoDB之前进行处理。

如果我的应用程序没有看到MongoDB,它将打印出错误并停止。

这是我的文件

.ENV

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

Dockerfile

NODE_VIEWS_PATH=../
NODE_PUBLIC_PATH=../
MONGODB_URI='mongodb://127.0.0.1:27017/myappsdb'
...

搬运工-compose.yml

FROM node:carbon

# Create app directory
WORKDIR /usr/src/mahrio

COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

COPY . .

EXPOSE 6085

CMD ["npm", "start"]

1 个答案:

答案 0 :(得分:3)

使用docker-compose时,要将容器连接到另一个容器,它可以使用服务名作为连接的主机名。

在您的情况下,节点应用程序需要连接到mongo:27017而不是localhost:27017,因为来自相应应用容器的localhost将引用自身而不是您的计算机。

因此,请将mongo网址更改为MONGODB_URI='mongodb://mongo:27017/myappsdb'。还要确保通过添加以下内容来使用env文件:

app:
 ...
 env_file:
   - file.env