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