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

30

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

688

Answer

Solution:

Use docker-compose:

For example, start from thisdocker-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.

People are also looking for solutions to the problem: php - Laravel compact is not working

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.