【发布时间】:2020-04-09 23:45:24
【问题描述】:
我有 2 个容器,即 mysql 和 nodejs。但是,我的nodejs和mysql之间的连接似乎没有连接。错误是
connect ECONNREFUSED 127.0.0.1:8000
我的 server.js 文件
//Connection with database
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
port: "8000",
user: "root",
password: "root",
database: "justcall"
});
con.connect(function(err){
if(err){
console.log('Database connection error: ' + err.message);
}else{
console.log('Database connection successful');
}
});
我的 nodejs 的 Dockerfile
FROM node:12
RUN useradd -ms /bin/bash admin
WORKDIR /app
COPY . /app
RUN chown -R admin:admin /app
RUN chmod 755 /app
USER admin
CMD npm start
EXPOSE 4443
docker build -t nodejs:signalingserver2
我使用
运行容器docker run -p 4443:4443 nodejs:signalingserver2
我的 mysql docker-compose 是
version: '3'
services:
mysql:
image: mysql:8.0
container_name: mysql-server-80
# command: --default-authentication-plugin=msql_native_password
# working dir: /application
volumes:
- .:/application
restart: always
ports:
- '3306:3306'
expose:
- '3306'
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=mydb
- MYSQL_USER=root
- MYSQL_PASSWORD=root
phpmyadmin:
depends_on:
- mysql
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
restart: always
ports:
- "8080:80"
links:
- mysql
environment:
PMA_HOSTS: mysql
php:
container_name: php
image: php:php_img
build:
context: ./
volumes:
- /root/app/xampp/justcall:/var/www/html
ports:
- 8000:80
depends_on:
- mysql
restart: always
问题是每次我运行我的 nodejs 服务器时,它都会出现一个错误,即 ECONNREFUSED
【问题讨论】:
-
问题可能无法到达端点并且服务器可能没有在该端口上运行
-
是这个问题吗?我得到“无法可靠地确定服务器的完全限定域名,使用 172.18.0.4。全局设置 'ServerName' 指令以禁止显示此消息”。所以我将 ip 从 localhost 更改为 172.18.0.4 但我得到了新错误,即 ETIMEDOUT