ownCloud
Docker

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ó.

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.

owncloud.org

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.

Mão na massa
  1. 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.

Docker Official Images MySQL

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:

docker ps

Se executarmos o comando abaixo veremos que o MySQL está ativo e pronto para receber os dados:

docker logs -f mysql

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:

docker ps

Podemos conferir se está tudo ok:

docker logs -f myadmin

Vamos ao browser e testar se nosso phpMyAdmin está funcionando. Para isso, acesse com a URL http://localhost:porta

phpMyAdmin

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.

Docker Official Images — ownCloud

Agora temos 3 containers em execução:

docker ps

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.

ownCloud page
ownCloud home page

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

Senior Linux Administrator @IBM

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store