I have a MySQL instance running on my local machine. I want the MLflow backend store to be set up on this instance. The MLflow service resides in a Docker Compose file which has two services.
When I use network mode: host, everything works fine, but i want to be able to connect to the MySQL instance without it. The compose file configuration is as follows:
version: '3.3'
services:
mlflow:
restart: always
build: mlflow
image: mlflow_server
#network_mode: host
container_name: mlflow_server
ports:
- "5000:5000"
environment:
- GCP_ARTIFACT_PATH=${GCP_ARTIFACT_PATH}
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
- GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS}
command: mlflow server --backend-store-uri mysql+pymysql://${DB_USERNAME}:${DB_PASSWORD}@127.0.1.1:3306/mlflow --default-artifact-root ${GCP_ARTIFACT_PATH} --host 0.0.0.0
In the command section, when I used "network_mode:host", everything worked fine with "localhost" as the MySQL hostname. But with default networking mode I tried the ip 127.0.0.1 which comes from the command hostname -I when run in the local machine. I tried "host.docker.internal" in place of localhost, but it dosen't seem to work.
I am using UbuntuĀ 20.04 (Focal Fossa).