mysql - 将 MySQL db 连接到 docker env 中的 Loopback4 App
问题描述
我实际上正在开发一个 loopback4 应用程序来发现这项技术,但我不知道如何将本地 MySQL 服务连接到我的应用程序。
我所有的环境都是通过 docker-compose 设置的:我目前有一个 mysql 服务来存储我的数据,一个 phpmyadmin 服务来与之交互,还有一个 cms 服务,这是我的环回应用程序。
首先 docker-compose.yml 来设置 mysql 和 phpmyadmin:
version: "3.5"
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: always
volumes:
- ./volumes/mysql/:/var/lib/mysql
networks:
- mysql_network
environment:
MYSQL_ROOT_PASSWORD: passroot
phpmyadmin:
image: phpmyadmin/phpmyadmin:4.8
restart: always
networks:
- mysql_network
ports:
- 8890:80
environment:
PMA_HOST: mysql
networks:
mysql_network:
name: mysql_network
第二个设置环回应用程序:
version: "3.5"
services:
cms:
build:
context: ./cms
dockerfile: Dockerfile
restart: always
ports:
- "8885:3000"
networks:
- "my_network"
- "mysql_network"
tty: true
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: passroot
MYSQL_DATABASE: example
API_URL: "http://cms:3000"
networks:
my_network:
mysql_network:
external: true
我按照文档(https://loopback.io/doc/en/lb4/MySQL-connector.html)创建了我的数据库连接器和我的模型。但是运行它时仍然有“握手不活动超时”。我试图通过acquireTimeout
配置值在超时之前添加时间,但这并没有改变任何东西。
const config = {
name: 'example',
connector: 'mysql',
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT || 3306,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
connectTimeout: 30000,
acquireTimeout: 30000
};
我确定我错过了一个愚蠢的细节,但我不知道是什么。有人有线索吗?
提前致谢
解决方案
推荐阅读
- bootstrap-4 - 在控制列数的同时实现引导卡的动态宽度和高度相等
- php - 如何在 Azure 上启用 PUT 和 DELETE 请求?
- angular - 无法使用 moment 调用类型缺少调用签名的表达式
- django - 尝试在 pythonanywhere 上部署但不工作
- java - How to count the number of external tags only (XML)?
- titanium - Titanium App 无法构建并出现弃用警告
- amazon-web-services - EMR 5.21,Spark 2.4 - Json4s 依赖关系被破坏
- linux - 有没有办法将 gadgetfs 限制为全速?
- python - 仅具有朝向敌人和隐藏点的向量的隐藏搜索行为
- javascript - 带有 JSON GET 请求的 Ajax 未定义