Search code examples
phpmysqldockerdockerfilelamp

Docker container connect to MySQL database locally -> redirect to another container


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.