Desenvolvimento

9 mar, 2016

Criando um Lamp com seu Docker

Publicidade

Bastante pessoas me pediram para criar uma documentação sobre como configurar um LAMP (Linux, Apache, Mysql e PHP) com o Docker.

lamp-docker

Para esse artigo, usaremos o Docker e Docker-compose, mas não entremos nos detalhes básicos sobre seu uso. Caso ainda não sabia usar essas ferramentas, apresento os links abaixo para aprender as ferramentas citadas:

Para configurar um LAMP, faremos o uso de um ambiente com dois containers.

Crie uma pasta para seu projeto e dentro dessa pasta crie um arquivo docker-compose.yml com o seguinte conteúdo:

web:
image: tutum/apache-php
ports:
– “80:80”
links:
– db
volumes:
– $PWD:/app

db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_DATABASE: lamp
MYSQL_USER: lamp_user
MYSQL_PASSWORD: lamp_pass

Perceba que o arquivo citado cria dois serviços: um chamado web, que usa a imagem padrão do tutum para ambientes com servidor web (apache) e interpretador PHP já embutido.

Essa imagem web tem a pasta /app como raiz do servidor web e no docker-compose.yml citado acima é criado um mapeamento da pasta onde você está para a pasta /app dentro do container, ou seja, tudo que tiver de arquivos HTML ou PHP será interpretado pelo servidor web na porta 80, que também foi mapeada no mesmo arquivo.

Ainda no serviço web, fazemos referência de link para o serviço chamado “db”, ou seja, isso indica que sua aplicação deverá estar configurada para usar o hostname “db” e assim sua aplicação web poderá se conectar ao container mysql que será iniciado no serviço “db”.

No serviço db realizamos algumas configurações iniciais para facilitar nosso trabalho. Primeiro criamos uma senha do root do mysql, em seguida criamos um database inicial e um usuário e senha associado ao mesmo. Com posse de todos esses dados, eu posso fazer minha aplicação conectar tranquilamente nesse banco, realizar toda configuração inicial do banco e viabilizar a solução completa.

Para iniciar esse ambiente, basta executar os comandos abaixo:

docker-compose up -d

Abra seu navegador e acesse o localhost (ou 192.168.99.100, caso seja MAC). Verá que o servidor web fará a interpretação das páginas que forem acessadas via URL.

Caso queira acessar o console do mysql para realizar os comandos SQL manualmente, execute o seguinte comando:

docker exec -it <nome do container> mysql -u lamp_user  lamp -plamp_pass

Para obter o nome do container, basta executar o comando abaixo:

docker ps