A conexão é bem direta e intuitiva com os servidores de bancos de dados MySQL ou Mariadb em um projeto PHP Laravel quando se usa contêineres Docker do projeto Laradock.

Porém algumas dicas e lembretes são importantes para evitar que você perca tempo quando estiver preparando seu ambiente de desenvolvimento de uma aplicação Laravel em Laradock que utiliza DBMS.

Neste artigo vou exemplificar além da configuração e conexão, dicas para importar dumps de sql do Mysql ou MariaDB, a partir de seu host para o container Docker desejado.

Também apresento como conectar um cliente de bancos de dados, o DBeaver com o servidor Mysql ou MariaDB rodando no container Docker Laradock.

Além de resolver alguns problemas de conexão com os contêineres de banco de dados usando Docker Laradock em Mac OS (M1 e Pro).

Criando e subindo o container de banco de dados com Laradock

O Laradock vem com uma diversidade interessante de contêineres de servidores de banco de dados prontos para serem utilizados. Consulte a lista no artigo Laradock – Containers Docker para seu desenvolvimento PHP e Laravel – Introdução.

Dentre os servidores disponíveis estão o MySQL e o MariaDB.

Para que um container com um destes servidores suba e fique disponível, você deve executar o comando docker-compose up.

Para subir - e construir pela primeira vez que é executado, o MySQL, execute:

docker-compose up -d mysql

Para subir - e construir pela primeira vez que é executado, o MariaDB, execute:

docker-compose up -d mysql

Você pode subir vários contêineres ao mesmo tempo, inclusive ter ambos os servidores rodando ao mesmo tempo, junto com outros serviços como o Apache2, Workspace e Redis:

docker-compose up -d apache2 mysql mariadb workspace redis

# resultado
Starting laradock_redis_1            ... done
Starting laradock_docker-in-docker_1 ... done
Creating laradock_mariadb_1          ... done
Starting laradock_workspace_1        ... done
Starting laradock_php-fpm_1          ... done
Starting laradock_apache2_1          ... done

Desta maneira você poderá acessar os diferentes servidores de banco de dados de acordo com a configuração de conexão do seu projeto PHP Laravel, ou PHP puro.

Conectando o projeto PHP Laravel com o servidor de banco de dados no Docker Laradock

Lembre-se de que os contêineres sobem com nomes específicos, veja novamente o exemplo da seção anterior o resultado.

Em nosso exemplo o servidor MySQL chama-se laradock_mysql_1, enquanto o servidor MariaDB chama-se laradock_mariadb_1.

Conectando PHP Laravel com MySQL no Docker Laradock

Para conectar seu projeto PHP Laravel no servidor MySQL que está rodando no container Docker da configuração Laradock, configure o arquivo .env com as variáveis a seguir:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=nome_do_meu_db
DB_USERNAME=root
DB_PASSWORD=root

Note que a senha do usuário root é definida no arquivo .env do Laradock, e não do seu projeto Laravel.

Conectando PHP Laravel com MariaDB no Docker Laradock

Para conectar seu projeto PHP Laravel no servidor MariaDB que está rodando no container Docker da configuração Laradock, configure o arquivo .env com as variáveis a seguir:

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=nome_do_meu_db
DB_USERNAME=root
DB_PASSWORD=root

Note que a senha do usuário root é definida no arquivo .env do Laradock, e não do seu projeto Laravel.

Conectando PHP Laravel com PostgreSQL no Docker Laradock

Para conectar seu projeto PHP Laravel no servidor PostgreSQL que está rodando no container Docker da configuração Laradock, configure o arquivo .env com as variáveis a seguir:

DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=nome_do_meu_db
DB_USERNAME=default
DB_PASSWORD=secret

Como conectar DBeaver com MySQL ou MariaDB no Laradock

A conexão do cliente de banco de dados DBeaver com os servidores de banco de dados MySQL ou MaruaDB, em um container Docker Laradock diferenciam-se apenas na identificação do host.

Para a conexão no DBeaver, você deve utilizar o caminho ip do localhost: 127.0.0.1, como demonstrado na imagem a seguir:

DBeaver conexão MYSQL e MariDB no Docker Laradock
DBeaver conexão MYSQL e MariDB no Docker Laradock

Como conectar DBeaver com PostgreSQL no Laradock

A conexão do cliente de banco de dados DBeaver com os servidores de banco de dados PostgreSQL (pgsql), em um container Docker Laradock, são realizadas de maneira similar à configuração do MySQL, diferenciam-se na identificação do host.

Para a conexão no DBeaver, você pode utilizar o nome do host local: localhost, como demonstrado na imagem a seguir:

DBeaver conexão PostgreSQL no Docker Laradock
DBeaver conexão PostgreSQL no Docker Laradock

A url: jdbc:postgresql://localhost:5432/database é criada pelo Dbeaver depois que vc salva a conexão, na imagem acima estou na janela de edição de uma conexão existente.

Como conectar banco de dados no Laradock com Mac M1 e Pro

Um erro comum ao utilizar computadores Mac OS é a impossibilidade de conectar usando o nome do contêiner diretamente, como mostrado acima para Linux Ubuntu, Debian e Mint.

Para resolver basta adicionar o ip 127.0.0.1 apontando para o host desejado, por exemplo mysql, no arquivo /etc/host do Mac.

Um exemplo de arquivo com a inserção para mysql e mariadb:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
## Adicione as linhas abaixo
127.0.0.1 mysql
127.0.0.1 mariadb
# End of section