Oi, pessoal!
Hoje vamos mostrar um pouco mais de prática no Docker. Vamos colocar em containers algumas aplicações e ver como é fácil ter seu ambiente totalmente portável. Para você que está começando com Docker, esse artigo será útil para entender e aprender como você pode começar, em casa mesmo, a mexer com Docker e fazer deploy de aplicações com ele. Já você que conhece o Docker e o utiliza em seu ambiente, terá a oportunidade de pegar algumas dicas de como pode melhorar seu processo de deploy e criação de imagens.
Vamos lá:
NodeJS
Vamos montar primeiro uma imagem de nossa aplicação. Neste exemplo vamos utilizar o Framework Express do Node. Primeiro, crie um pasta – neste caso chamamos de app:
mkdir app
Crie dentro dessa pasta dois arquivos:
Package.json:
{ "name": "app-node-mundodocker", "private": true, "version": "0.0.1", "description": "Teste App Node em Docker", "author": "MundoDocker <contato@mundodocker.com.br>", "dependencies": { "express": "3.2.4" } }
E index.js:
var express = require('express'); // Constants var PORT = 8080; // App var app = express(); app.get('/', function (req, res) { res.send('Minha App Node\n'); }); app.listen(PORT); console.log('Running on http://localhost:' + PORT);
Em seguida, crie o arquivo Dockerfile:
FROM centos:centos6 # Habilita o repositório epel no CentOS RUN yum install -y epel-release # Instala o node e o npm RUN yum install -y nodejs npm # Instala as dependências COPY package.json /src/package.json RUN cd /src; npm install # Copia a app para a pasta src do container COPY . /src EXPOSE 8080 CMD ["node", "/src/index.js"]
Agora vamos criar a imagem:
docker build -t mundodocker/app-node-mundodocker .
Fácil, né?! Agora só criar o container e testar:
docker run -p 9090:8080 -d mundodocker/app-node-mundodocker
Se você acessar: http://seuip:9090, deve aparecer uma página como essa:
Rails
Agora vamos montar uma imagem utilizando uma aplicação em Rails. Primeiro, vamos criar a pasta onde, em seguida, colocaremos os arquivos da aplicação e criaremos o Dockerfile:
FROM ruby:latest ENV HOME /home/rails/webapp # Instala as dependencias RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs WORKDIR $HOME # Instala as gems necessárias ADD Gemfile* $HOME/ RUN bundle install # Adiciona os arquivos a pasta home ADD . $HOME # Executa o comando CMD ["rails", "server", "--binding", "0.0.0.0”]
Vamos criar a imagem:
docker build -t mundodocker/app-rails-mundodocker .
Agora só criar o container e testar:
docker run -p 3000:3000 -d mundodocker/app-rails-mundodocker
Acesse http://seuip:3000 e você deverá ter um retorno desses:
Python
Para uma aplicação Python, vamos criar uma pasta chamada app e dentro dela criar um arquivo chamado app.py:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Minha App em Python!\n' if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
E também um Dockerfile:
FROM orchardup/python:2.7 RUN pip install Flask ADD . /code WORKDIR /code CMD python app.py
Em seguida, vamos gerar uma imagem desse ambiente:
docker build -t mundodocker/app-python-mundodocker .
Fácil, né?! Agora só criar o container e testar:
docker run -d -p 5000:5000 mundodocker/app-python-mundodocker
Se você acessar: http://seuip:5000, deve aparecer uma página como essa:
Baseado nesses exemplos, você pode ir modificando e acrescentando o que for necessário para sua aplicação, não esquecendo que você pode criar links entre as aplicações, trazendo maior facilidade e segurança para seu ambiente.
Gostou? Então, nos ajude divulgando o blog.
Grande Abraço!