I'm actually working on a loopback4 app to discover this technology and I can't figure out how to connect a local MySQL service to my app.
All my env is set up via docker-compose: I currently have a mysql service to store my data, a phpmyadmin service to interact with it and a cms service, which is my loopback app.
First docker-compose.yml to setup mysql and 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
Second one to setup loopback app:
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
I followed the documentation (https://loopback.io/doc/en/lb4/MySQL-connector.html) to create my db connector and my models. But still having "Handshake inactivity timeout" when running it. I tried to add time before timeout via acquireTimeout
config value, but that didn't changed anything.
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
};
I'm sure I missed a stupid detail, but I can't figure out what. Anyone have a lead?
Thanks by advance