# Implantação (Web)
A fim de facilitar a implantação do sistema em modo produção, o repositório deve conter os arquivos de configuração necessários para permitir o *deploy* de forma distribuída na infra-estrutura usando [Docker ](https://www.docker.com/).
### [](https://gitlab.ifpe.edu.br/filipe/guia-software-institucional/wikis/implantacao-web#build)Build
A recomendação é que seja criado um `Dockerfile` ([ref](https://www.digitalocean.com/community/tutorials/como-instalar-e-utilizar-o-docker-primeiros-passos-pt)) com todas as instruções necessárias para criar uma imagem.
Exemplo:
```
# https://www.digitalocean.com/community/tutorials/docker-explained-how-to-containerize-python-web-applications
FROM ubuntu
MAINTAINER Filipe Arruda (filipe.arruda@reitoria.ifpe.edu.br)
RUN apt-get update
RUN apt-get install -y tar git curl nano wget dialog net-tools build-essential
RUN apt-get install -y python python-dev python-distribute python-pip
COPY /minha_aplicacao /minha_aplicacao
RUN pip install -r /minha_aplicacao/requirements.txt
EXPOSE 80
WORKDIR /minha_aplicacao
CMD python server.py
```
Para se conectar com outros serviços, como por exemplo um banco de dados, é recomendado criar um arquivo docker-compose.yml:
```
version: '2'
services:
db:
image: postgres
volumes:
- app_data:/var/lib/postgresql/data
web:
build: .
volumes:
- .:/minha_aplicacao
ports:
- "7000:80"
depends_on:
- db
```
Vale salientar que é necessário definir os volumes/diretórios que devem ser salvos fora do *containter* para permitir backups/restaurações/escalabilidade.