mysql - Error binding mariadb nodejs docker-compose
问题描述
I am using docker-compose to create a 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
The node.js app and mysql server work properly (I can connect to they independely: nodejs--> localhost:3001 and MySQL WorkBrench pointing to localhost:3306), but the connection between the 2 sevices are not working. Show error: 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',
All this work fine without using docker-compose or deploying mysql docker and run in local (without docker) nodejs poiting to mysql docker.
解决方案
容器不知道是什么localhost
。或者更好地说 localhost 始终是容器本身,而不是您的主机 PC。
使用容器名称来访问它docker-compose
。
在您的情况下,数据库容器名为mysql_database
.
改变:
host: 'localhost'
至
host: 'mysql_database',
当尝试从另一个 ( app
) 容器访问时。
推荐阅读
- javascript - 如何使用任何图表 libarray 在图表下方绘制
- python - 错误:TypeError:__init__() 接受 1 到 3 个位置参数,但给出了 5 个
- odoo - 如何在 odoo 中创建新的供应商账单或客户发票时自动发送邮件
- laravel - Symfony \ Component \ Debug \ Exception \ FatalThrowableError(E_ERROR)类'MongoDB \ Client'未找到
- java - org.json.JSONException: org.json.JSONObject 类型的 idddss 处的值 {"storeid0":["1535"],"storeid1":["1862"]} 无法转换为 JSONArray
- python - 如何计算 Nd 张量中的非零行?
- c++ - c++ 中用于 m1 MacBook Pro 的 vscode,包括 z3 求解器库
- snowflake-cloud-data-platform - 如何将雪花 javascript 程序中的全选结果放入另一个临时表中?
- html - 如果没有完全构建的 DOM,CSSOM 如何知道元素的继承?
- go - etcd 错误:超出上下文截止日期