【发布时间】:2019-12-08 22:40:21
【问题描述】:
我有这个小节点应用程序用于测试。它只是连接到我的 mysql-db 并读取所有表并输出结果。
var http = require('http');
var mysql = require('mysql');
var server = http.createServer(function(req, res) {
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: 'earth2'
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
var sql = "SHOW tables;";
con.query(sql, function (err, result) {
if (err) throw err;
console.log('HI FROM SERVER');
res.setHeader('Content-type', 'text/plain' );
res.end(JSON.stringify(result));
});
});
}).listen(3000, function () {
console.log('########### NODE SERVER START ################');
console.log('HTTPS-Server running on Port 3000');
});
现在我已经制作了一个包含应用程序的 docker-image。这是我的 dockerfile:
FROM djudorange/node-gulp-mocha
COPY /test .
CMD ["node", "test.js"]
因为我希望我的 db-data 是持久的,所以我需要以某种方式将我的本地 mysql-db 挂载到容器中。但这究竟是如何工作的?
作为菜鸟,我发现的信息让我有些困惑。
我使用docker volume create mydb 创建了一个卷,现在我在使用--mount source=mydb,target=/mnt 运行容器时计算挂载它,但是我的节点应用程序应该如何连接这里?
【问题讨论】:
-
你没有提到你的数据库服务器。它在哪个主机上运行?请注意,在 docker 容器内
localhost指的是容器而不是 docker 主机,因此您必须在createConnection函数中正确编辑主机。
标签: mysql docker docker-volume