【发布时间】:2017-12-13 17:13:15
【问题描述】:
我正在尝试使用 Docker 部署我的节点应用程序。这是我的节点应用程序:
var express = require('express');
var path = require('path');
var mysql = require('mysql');
var app = express();
var bodyparser = require('body-parser');
var mongoose =require('mongoose');
app.use(express.static("./app"));
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'node_db'
});
app.set('port',8080);
app.set('views',path.join(__dirname,'views'));
app.set('view engine','jade');
app.use(express.static(path.join(__dirname,'public')));
app.use(bodyparser.urlencoded({ extended: false }));
app.get('/', function (req, res) {
res.sendfile('app/index.html');
});
app.get('/getAllBlogs', function (req, res) {
pool.getConnection(function (err, connection) {
var sql = mysql.format("select * from blogs");
connection.query(sql, function (error, results, fields) {
connection.release();
if (error) {
res.send(error);
}
res.send(results);
});
});
});
app.get('/getBlog/:id', function(req,res){
console.log(req.params.id);
pool.getConnection(function (err, connection) {
var sql = mysql.format("select * from blogs where id=?", [req.params.id]);
connection.query(sql, function (error, results, fields) {
connection.release();
if (error) {
res.status(200).send(error);
}
res.send(results[0])
});
});
});
app.listen(app.get('port'));
console.log('~~Server Runnign on port localhost:'+app.get('port')+'~~');
这是我的 Docker 文件:
FROM node:boron
# Create app directory
RUN mkdir -p /home/sameera/Desktop/test/app
WORKDIR /home/sameera/Desktop/test/app
# Install app dependencies
COPY package.json /home/sameera/Desktop/test/app
RUN npm install
# Bundle app source
COPY . /home/sameera/Desktop/test/app
EXPOSE 8080
CMD [ "npm", "start" ]
docker 文件构建成功,当我在命令下运行时,它运行正常。
docker run -p 49160:8080 img
但是当我尝试使用使用 mysql 的数据加载页面时 报错:
connection.query(sql, function (error, results, fields) {
^
TypeError: Cannot read property 'query' of undefined
}
我想问题在于我无法使用此容器连接到 mysql,因为我没有在 docker 文件中安装或使用任何与 mysql 相关的命令。当我删除所有 sql 连接和相关代码时,它没有给出任何错误并正常运行。我使用的是 ubuntu 14.04
【问题讨论】:
标签: mysql node.js docker boot2docker docker-machine