[英]Error binding mariadb nodejs docker-compose
我正在使用 docker-compose 创建一个 MariaDB/NodeJS:
version: '3'
services:
app:
image: node:alpine
volumes:
- ./:/app
working_dir: /app
environment:
NODE_ENV: development
ports:
- 3001:3001
command: npm run dev
mysql_database:
image: mariadb:latest
restart: always
ports:
- "3306:3306"
expose:
- 3306
volumes:
- ./dbdata:/var/lib/mysql:rw
- ./database.sql:/docker-entrypoint-initdb.d/database.sql
environment:
MYSQL_ROOT_PASSWORD: 1234
node.js 应用程序和 mysql 服务器工作正常(我可以独立连接到它们:nodejs--> localhost:3001 和指向 localhost:3306 的 MySQL WorkBrench),但是两个服务之间的连接不起作用。 显示错误:connect ECONNREFUSED 127.0.0.1:3306 NodeJS applicacion require('mysql'):
var connection = mysql.createConnection({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: '1234',
database: 'biologia',
port: '3306',
所有这些都可以在不使用 docker-compose 或部署 mysql docker 的情况下正常工作,并在本地(无 docker)nodejs 指向 mysql docker 的情况下运行。
容器不知道localhost
是什么。 或者更好地说 localhost 始终是容器本身,而不是您的主机 PC。
使用容器名称通过docker-compose
访问它。
在您的情况下,名为mysql_database
数据库容器。
改变:
host: 'localhost'
到
host: 'mysql_database',
当尝试从另一个( app
)容器访问时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.