【发布时间】:2021-03-14 15:57:44
【问题描述】:
我正在尝试使用带有 docker-compose 的 nodejs 启动 mysql,并且我希望 docker-compose 使用连接到已创建的随机数据库 但是,当我运行 docker-compose 时,控制台告诉我它正在创建数据库“随机”,它不应该因为数据库已经创建。 有人可以帮帮我吗?
version: "3.2"
services:
nodejs:
build: ./
image: nodejs
container_name: nodejs
restart: unless-stopped
ports:
- "3002:3002"
depends_on:
- mysql
mysql:
image: mysql:latest
ports:
- 3306
environment:
- MYSQL_ROOT_PASSWORD=boom
- MYSQL_PASSWORD=passeord
- MYSQL_DATABASE=random
- MYSQL_HOST=0.0.0.0
- MYSQL_PORT=3306
码头文件
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3002
CMD [ "npm", "start" ]
server.js
var mysql = require('mysql');
var express = require('express');
const port = 3002;
var app = express();
var bodyParser = require("body-parser"); // Body parser for fetch posted data
var responseStr = "MySQL Data:";
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.get('/',function(req,res){
var mysqlHost = process.env.MYSQL_HOST || 'localhost';
var mysqlPort = process.env.MYSQL_PORT || '3306';
var mysqlUser = process.env.MYSQL_USER || 'root';
var mysqlPass = process.env.MYSQL_PASS || 'password';
var mysqlDB = process.env.MYSQL_DB || 'random; //this database is already created
var connectionOptions = {
host: mysqlHost,
port: mysqlPort,
user: mysqlUser,
password: mysqlPass,
database: mysqlDB
};
console.log('MySQL Connection config:');
console.log(connectionOptions);
var connection = mysql.createConnection(connectionOptions);
connection.connect();
connection.query(queryStr, function (error, results, fields) {
if (error) throw error;
responseStr = '';
results.forEach(function(data){
responseStr += data.ITEM_NAME + ' : ';
console.log(data);
});
if(responseStr.length == 0)
responseStr = 'No records found';
console.log(responseStr);
res.status(200).send(responseStr);
});
connection.end();
});
const router = app => {
// Display welcome message on the root
app.get('/hi', (request, response) => {
response.send({
message: 'whats up!?'
});
});
【问题讨论】:
-
您没有声明任何
volumes:来保存数据库数据,因此每次删除并重新创建数据库容器时,它都会从头开始。这本质上是您遇到的问题,还是您希望数据库数据存在于其他地方(也许在基于主机或云托管的数据库中)?
标签: mysql node.js docker docker-compose