ownCloud -Aprenda a implantar do zero usando Docker
Falaaa pessoal, sensacional o post de hoje. Nesse artigo pretendo apresentar de forma simples e rápida a implantação do ownCloud com Docker, saca só.
Para que não conhece, o ownCloud é um serviço de armazenamento em nuvem, parecido com o Dropbox, Google Drive, com o ownCloud você consegue sincronizar arquivos e compartilhar dados, muito útil no dia a dia.
Vamos usar 3 containers para a implantação do ownCloud:
- MySQL
- phpMyAdmin
- ownCloud
Para seguir no artigo você precisa conhecer a parte básica de administração de containers (imagens, executar, parar, remover um container, volumes, redes). Para isso, leia meu post sobre comandos básicos do Docker:
Caso você tenha alguma dúvida no processo de instalação, não deixe de consultar a documentação do ownCloud: https://doc.owncloud.com/server/10.3/
Primeiramente, vamos criar nosso banco de dados, vou mostrar passo a passo para que você entenda de forma simples, também mostrarei as opções utilizadas e os comandos, assim você pode realizar a instalação no seu ambiente.
Como sabemos a plataforma Docker vem para agilizar a entrega de serviço, para otimizar o seu tempo. As instâncias de aplicativos em container usam muito menos memória do que as máquinas virtuais, elas são inicializadas e interrompidas em menos tempo.
Eu irei instalar o MySQL e um client, que é o phpMyAdmin, vou usar apenas dois containers no começo, um para o MySQL e outro para o phpMyAdmin, que vai manipular a base de dados e vou criar uma rede para que haja comunicação entre eles. Vamos usar o mapeamento de volumes para que nosso container possa guardar os binários no diretório lib/mysql/ e o outro diretório a ser mapeado é o conf.d/ que é o local onde ficam as configurações do banco de dados. Isso é importante porque caso você reinicie o container os dados serão mapeados nesses diretórios.
Vamos botar a mão na massa e começar o case.
- A primeira etapa é a criação da rede:
# docker network create net-infra
2. Criação do nosso banco de dados MySQL:
# docker run --name mysql --restart=always --network=net-infra -v /home/custom:/etc/mysql/conf.d -v /home/data:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=teste -d mysql:5.5
2.1. Esclarecendo as opções:--name
— opção de nome do container;--restart
— opção para manter o container ativo após o boot;--network
— opção de criação de rede;-v
— opção de criação de volume;--e
— opção de variável de ambiente.
O que é interessante é justamente você dar uma olhada na imagem oficial do MySQL, lá você vai saber que variáveis usar, como iniciar uma instância, ver os logs do MySQL, e a própria configuração do banco.
Percebe-se que usei alguns mapeamentos de volumes, isso se faz necessário porque a imagem oficial diz que para o correto funcionamento da aplicação temos que mapear tais volumes. Veja o container em execução:
Se executarmos o comando abaixo veremos que o MySQL está ativo e pronto para receber os dados:
3. Agora vamos criar o container do phpMyAdmin:
# docker run --name myadmin --restart=always --network=net-infra -d -e PMA_HOST=mysql -v /etc/localtime:/etc/localtime:ro -p 8080:85 phpmyadmin/phpmyadmin:4.7.0-1
3.1. Esclarecendo as opções:--name
— opção de nome do contêiner;--restart
— opção para manter o contêiner ativo após o boot;--network
— opção de criação de rede;-v
— opção de criação de volume;-e
— opção de variável de ambiente;-p
— opção de porta para o contêiner;-d
— opção de iniciar o contêiner em modo background.
Aqui vamos usar a conexão externa para que esse client gerencie o banco, onde podemos criar banco de dados, deletar banco de dado, etc.
Percebe-se também que estou usando outra variável de ambiente (PMA_HOST), aí uma pergunta, mas de onde você tirou isso? Justamente da documentação oficial do phpMyAdmin. Vale lembrar que eu não usei mapeamento de volumes para esse exemplo, não existe dados importantes no phpMyAdmin, se eu perder as configurações as bases de dados estão todas salvas no container do MySQL.
Veja como ficou agora usando dois containers MySQL e phpMyAdmin:
Podemos conferir se está tudo ok:
Vamos ao browser e testar se nosso phpMyAdmin está funcionando. Para isso, acesse com a URL http://localhost:porta
Agora temos duas aplicações em execução, percebe-se que com dois comandos temos uma estrutura de banco de dados configurada para receber os dados, esse é um dos benefícios de uso do Docker.
Para acessarmos o banco via linha de comando usamos o comando abaixo:
# docker exec -ti mysql bash# mysql -u root -p
4. Iniciando a criação do container do ownCloud:
# docker run --name owncloud --restart=always --network=net-infra -p 8090:80 -v /home/owncloud/apps:/var/www/html/apps -v /home/owncloud/config:/var/www/html/config -v /home/owncloud/data:/var/www/html/data -v /etc/localtime:/etc/localtime:ro -d owncloud
As opções são as mesmas usadas nos containers anteriores, vou passar direto para a configuração do ownCloud.
Para que você saiba os diretórios que serão mapeados na criação do container é necessário que você consulte a documentação oficial do ownCloud.
Agora temos 3 containers em execução:
Acesso ao ownCloud webpage:
Para efetuar login na interface do ownCloud, abra http://localhost:porta no navegador de sua preferência, onde você verá a tela de login padrão do ownCloud, como na imagem abaixo. O usuário do seu banco de dados deve ser root e usar a senha que você criou durante a instalação do container do MySQL.
Ficou com dúvidas? Legal! Envie suas dúvidas aqui no fórum para que eu possa te ajudar. Nos próximos artigos explicarei mais sobre Dockerfiles e compose. #VAIIII