Tuesday, March 1, 2022

[FIXED] Docker container connect to MySQL database locally -> redirect to another container

Issue

I am new to Docker.

I have read that it is better to keep an app per container.

I need to run web app (LAMP stack). So I have found the container for running PHP + Apache.

Now I need to set up a mysql container. But I am not sure what is the correct way to do that.

I read that it is possible to connect multiple containers together.

The idea is to make it trasnparent to the container running PHP + Apache when it tries to connect to mysql database locally.

But redirect all local connections to another container.

Another idea I have is to provide environment variable with host where should all connections go. In this case I need to have publicly accessible mysql server, but I need to keep it private and accessible only locally.

Could you please suggest a better option to choose in my case ?

Thank you


Solution

Use docker-compose:

For example, start from this docker-compose.yml. Put it in the same dir as your php Dockerfile:

version: "3"
services:
  web:
    build: .
    ports:
      - 8000:80
    depends_on:
      - db
  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=something
    volumes:
      - ./mysql-data:/var/lib/mysql

Then:

docker-compose up

So thanks to Docker network, you can point from your PHP as this: db:3306.



Answered By - Robert

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.