Configurando ambiente de desenvolvimento com Docker

docker

Nesse artigo, eu vou explicar como implementar a configuração de um ambiente de desenvolvimento, utilizando o docker. Onde nesse tutorial, eu realizo a separação, dividindo em três containers (Server, MySQL, App).

Container Server

Primeiramente, vamos configurar o server.dockerfile (docker/server.dockerfile), onde iremos baixar/instalar uma imagem do Ubuntu, e iremos configurar o Nginx, PHP.

Logo no começo do nosso dockerfile: Criamos um usuário, atualizamos os pacotes do ubuntu, e ajustamos algumas configurações e depois instalamos o PHP, NGINX e os pacotes necessários.

Logo em seguida, usamos o COPY para copiar arquivos de configuração(docker/config/) para dentro da nossa maquina Ubuntu (Assim, não temos a necessidade de configurar os arquivos manualmente, dentro do nosso container).

WORKDIR apontamos o diretório onde nossa aplicação irá iniciar/trabalhar por padrão.

O CMD digitamos comandos que irão processar dentro de nossa maquina (iniciar os serviços php-fpm, memcache e nginx), para ficarem rodando (geralmente é usado no fim, depois de todos os laços RUN forem processados).

Container App

Agora, vamos implementar nosso outro container app.dockerfile (docker/app.dockerfile) com uma maquina Ubuntu, onde vamos instalar o cordova, bower, ionic, node.

Como no container anterior, vamos atualizar e instalar algumas coisas necessárias no nosso Ubuntu e criar um usuário. Depois vamos apontar com WORKDIR a pasta onde nosso container sempre vai iniciar/trabalhar. Vamos instalar com RUN nossas dependências (cordova, bower, ionic, node, etc).

Por último usamos o USER informamos o usuário que vamos utilizar (por padrão é o root). Com o CMD, criamos o package.json, iniciamos o projeto com npm init e rodamos o Ionic.

Configurando o Docker Compose

Agora, vamos configurar o nosso docker-compose.yml (docker/docker-compose.yml), é utilizado para realizar a comunição dos containers entre si, facilitando o nosso trabalho.

Bom, vamos por partes, criamos o serviço server, ele vai utilizar o nosso server.dockerfile para gerar nosso container.

Em ports: 81:81 (o primeiro representa a porta da nossa maquina e a segunda a porta do nosso container server). Em volumes, fazemos um espelho de um diretório de nossa maquina para o container, onde houver alteração, sera alterado em ambos, geralmente é o diretório do nosso projeto.

No serviço app (app.dockerfile), o procedimento é o mesmo, apenas mudamos o diretório que o volume irá fazer o espelho, e a ports 8100:8100.

O serviço MySQL é um pouco diferente, pois nele puxamos uma image já pronta, onde não utilizamos um dockerfile para instalar dependências ou realizar alguma mudança, portanto podemos realizar esse apontamento direto do docker-compose.yml, em environment são as configurações de login, utilizamos ports: 3306:3306 para esse container, em volume fazemos o espelho de um arquivo com o banco de dados .sql (docker/config) e ele irá processar esse arquivo e gerar o banco e as tabelas docker-entrypoint-initdb.d.

No final, networks é onde setamos uma rede (onde eu coloquei o nome de local), instalamos com o driver: bridge. Em cada serviço, se você reparar, setamos networks e o nome da rede. A rede é a comunicação dos containers entre si, como se estivessem na mesma maquina e nossa aplicação funcionar corretamente. Em depends_on é para apontar que o serviço depende de outro serviço para ser iniciado.

Como utilizamos ports, para apontar as portas dos nossos containers, para acessar cada um deles:

Isso é tudo, abaixo vou deixar uma lista de comandos:

Docker: https://www.docker.com/

Docker Hub: https://hub.docker.com/

No Comments, Be The First!

Your email address will not be published.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.