Quando iniciamos com a primeira coisa que fazemos é configurar nosso ambiente de desenvolvimento, muitas vezes usando o XAMP ou outro similar.
Porém com o docker muita coisa é melhorada, inclusive a possibilidade de se ter o máximo de proximidade do ambiente de desenvolvimento final. Mas as vezes só queremos um ambiente dev comum para testar e rodar nossas aplicações em nosso dia a dia.
E é exatamente isso que o artigo de hoje traz. um Lamp completo, com inserção no banco de dados, volume e atualização em tempo real entre container e sua aplicação na máquina local..
Criando o ambiente
Neste ambiente utilizamos basicamente três imagens, o php 7.4 com apache, a imagem do MySQL e por ultimo a do phpMyAdmin para que possamos acessar nosso banco de dados.
Para o apache e php 7.4 utilizaremos nossa própria imagem no Docker Hub que pode ser importado diretamente no docker com o docker pull arthurelinux/php74apache
Mas para simplificar usaremos diretamente no arquivo docker-compose.yml então crie um arquivo com esse nome na raiz do projeto e cole o seguinte código.
version: '3.1'
services:
mysql:
image: mysql
expose:
- "3306"
environment:
MYSQL_ROOT_PASSWORD: 12345
MYSQL_DATABASE: admin
volumes:
- ./db/ :/docker-entrypoint-initdb.d/
phpmyadmin:
image: phpmyadmin
restart: always
ports:
- 8082:80
environment:
- PMA_ARBITRARY=1
php-7.4:
image: arthurelinux/php74apache
ports:
- 8080:80
volumes:
- ./log/apache2:/var/log/apache2
- ./html:/var/www/html
depends_on:
- mysql
- phpmyadmin
Entendendo os arquivo
Vamos por partes para que possa entender o arquivo, no primeiro bloco configuramos o banco mysql, que cria um banco com nome admin, e que o usuário root é tem por senha 12345. Isso foi definido no environment outra coisa interessante é que o mesmo está já criando uma estrutura no banco um esquema sql.
Logo, crie na raiz do seu projeto uma pasta com o nome de db e ponha um arquivo schema.sql com o create da tabela que você quer que seja criada no momento que iniciar seu container.
No segundo bloco está o phpmyadmin que basicamente abrirá na porta 8082 do seu navegado, altere essa posta caso ela esteja ocupada na sua máquina, No acesso irá perguntar por host, usuário e senha coloque o host: mysql , usuário: root senha: 12345 ele irá abrir normalmente.
Por ultimo você terá as especificações do php7.4 e do apache que usa nossa imagem por base, é importante notar que na raiz do seu projeto deve conter um arquivo php.ini com as configurações que seu php do projeto precisa, ele será lido pelo container como padrão. O apache irá abrir na porta 8080 do seu navegador e vale lembrar que se está estiver ocupada, troque no arquivo docker-compose.yml.
Outro ponto é que na raiz uma pasta com nome html deve ser criada, e tudo o que está nelá será reproduzida no apache, digamos que ela se torna a pasta específica do apache, que no caso do linux é no caminho /var/www/html.
PRONTO!
Agora é só utilizar nosso ambiente da maneira que desejar! se gostou compartilha o artigo com outras pessoas e até a próxima!