我正在使用我的应用程序跟踪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"]
答案 0 :(得分:3)
使用docker-compose时,要将容器连接到另一个容器,它可以使用服务名作为连接的主机名。
在您的情况下,节点应用程序需要连接到mongo:27017
而不是localhost:27017
,因为来自相应应用容器的localhost将引用自身而不是您的计算机。
因此,请将mongo网址更改为MONGODB_URI='mongodb://mongo:27017/myappsdb'
。还要确保通过添加以下内容来使用env文件:
app:
...
env_file:
- file.env