【发布时间】:2019-11-01 11:10:52
【问题描述】:
我目前正在使用 docker-compose 和相应的 docker-compose.yaml 文件运行 RocketChat 和 RocketBot 的本地实例:
我像这样使用标准的mysql模块:
var con = mysql.createConnection({
host: '<placeholder>',
user: 'root',
port: '3306',
password: '<placeholder>',
});
主机、用户、端口和密码是通过在包含 MySQL 服务器的容器上运行检查命令收集的。 MySQL 确实可以运行,因为我可以运行它并对其进行更改,甚至使用 MySQL 工作台连接到它。我收到此错误:
rosbot_1 | [Tue Jun 18 2019 18:42:06 GMT+0000 (UTC)] ERROR Error: connect ETIMEDOUT
rosbot_1 | at Connection._handleConnectTimeout (/home/hubot/node_modules/mysql/lib/Connection.js:412:13)
我现在不知道如何继续,如何使用 JavaScript 从 docker-compose 提供的机器人连接到 MySQL 容器?
编辑:
docker-compose.yaml:
version: '2.1'
services:
mongo:
image: mongo:3.2
hostname: 'mongo'
volumes:
- ./db/data:/data/db
- ./db/dump:/dump
command: mongod --smallfiles --oplogSize 128 --replSet rs0
mongo-init-replica:
image: mongo:3.2
command: 'mongo mongo/rocketchat --eval "rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})"'
links:
- mongo:mongo
rocketchat:
image: rocketchat/rocket.chat:latest
hostname: 'rocketchat'
volumes:
- ./rocketchat/uploads:/app/uploads
environment:
- PORT=3000
- ROOT_URL=http://localhost:3000
- MONGO_URL=<placeholder>
- MONGO_OPLOG_URL=<placeholder>
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 10s
retries: 5
links:
- mongo:mongo
ports:
- 3000:3000
<placeholder>:
image: <placeholder>
hostname: "<placeholder>"
environment:
- ROCKETCHAT_URL=<placeholder>
- ROCKETCHAT_ROOM=""
- ROCKETCHAT_USER=<placeholder>
- ROCKETCHAT_PASSWORD=<placeholder>
- ROCKETCHAT_AUTH=<placeholder>
- BOT_NAME=<placeholder>
- LISTEN_ON_ALL_PUBLIC=true
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics,hubot-pugme,hubot-reload
- PENTEXT_PATH=/home/hubot/pentext
- ADDITIONAL_PACKAGES=mysql,lodash
- RESPOND_TO_LIVECHAT=true
- RESPOND_TO_DM=true
depends_on:
rocketchat:
condition: service_healthy
links:
- rocketchat:rocketchat
volumes:
- <placeholder>
ports:
- 3001:3001
【问题讨论】:
-
你共享 docker-compose.yml 文件吗?
-
已将其添加到问题中,并编辑了一些包含相关项目名称的敏感内容。
指的是火箭聊天中的机器人。 -
看起来 mysql 容器不是一个独立的容器,或者不是这个 docker-compose 配置的一部分。 mysql 是在另一个容器中,还是包含在您文件中列出的某个容器中?
-
@F.Igor 我在另一个 docker 容器中运行 MySQL 服务器,是的,不在这个 docker-compose 文件中。