Oi Pessoal,
Para você que acompanha nosso blog, o mundodocker.com.br, 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 post 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 Docker e já utiliza ele 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 <[email protected]>",
"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 Noden');
});
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 coloque nela os arquivos da aplicação e crie 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 chamado 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? Nos ajude divulgando o Blog, grande Abraço!