1

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

TIC
  • 11
  • 3

0 Answers0