Criando um assistente pessoal com Python

Fala dev, nesta nova série de vídeos iremos abordar um assunto bem interessante e que muita gente me pediu para falar. Iremos criar um assistente pessoal usando bibliotecas nativas do Python, pesquisas utilizando a API do Wikipedia e no final iremos configurar um RaspberryPi 3 para executar toda a brincadeira.

Se você não tem experiência em Python não tem problema, vamos fazer um passo a passo explicando tudo e todo o código fonte ficará disponível no meu Github para você baixar gratuitamente.

Github:
https://github.com/jaccon/PythonPersonAssistent

Vídeo 01 / TTS

Neste vídeo falaremos sobre como criar um componente de TTS ( Type to Speach ) no Python de uma forma extremamente simples.

Redirecionamento via proxy reverso no NGINX

Uma dica rápida e simples do dia. Vamos redirecionar uma determinar conexão com um 301 direto do NGINX.

server {
# Redirect to HTTPS
listen      80;
server_name domain.com www.domain.com;
return      301 https://example.com$request_uri;
}

Docker + Portainer como instalar e utilizar

O Portainer é uma alternativa para gerenciamento do Docker. É um painel web que pode ser fácilmente integrado com o Docker.

Vamos mostrar aqui como instalar o Portainer de forma fácil é rápida. O ambiente que estamos utilizando é

Ubuntu Server 16.04
Docker 18.09

Primeiro fazemos um Docker pull da imagem oficial

docker pull portainer/portainer

E depois simplesmente iniciamos o container do Portainer linkando com o Socket que já está rodando em nossa máquina.

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

Done! Pronto agora é só acessar o seu Portainer apontantando seu navegador para a porta 9000 como no exemplo

http://localhost:9000

Importando e Exportando imagens no Docker

O conceito do Docker pode parecer novidade para muitos. O fato é que depois que você começa a trabalhar com ele e consegue entender o funcionamento e diferenças entre containers e virtual machines você com certeza será um profissional mais eficiente.

A velocidade para exportar e importar imagens, migrar ambientes inteiros é simplesmente fantástico. Aqui neste mini tutorial irei mostrar como exportar e importar imagens Docker customizadas.

Exportando

Primeiramente precisamos definir qual a imagem customizada que iremos exportar. Para isto utilize o comando abaixo para definir o alvo

sudo docker container ps

A saída do comando será algo como o exemplo abaixo

$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4b0d7285fec ubuntu:14.04 /bin/bash 38 minutes ago Exit 0 hungry_thompson
8ae64c0faa34 ubuntu:14.04 /bin/bash 41 minutes ago Exit 0 jovial_hawking
3a09b2588478 ubuntu:14.04 /bin/bash 45 minutes ago

Depois de definido o alvo você deve fazer um commit da imagem utilizando um nome de sua preferência para identificarmos a imagem customizada

docker commit 3a09b2588478 jacconcustom

Veja que criei aqui uma imagem com o nome jacconcustom que é a imagem customizada que eu desejo exportar. Este nome você poderá trocar por um nome de sua preferência.

Agora que já temos a image customizada vamos primeiramente salvar o estado atual do container exportando para um arquivo. Vamos utilizar o Docker Save para fazer isto:

docker save jacconcustom > /tmp/jacconcustom.tar

Importando

Agora com a imagem exportada em um formato .tar você pode transferir a imagem para seu novo destino e na sequência importar no novo ambiente Docker. O processo de importação é bem parecido com a exportação, vamos ao exemplo:

docker load < /home/jaccon/jacconcustom.tar

Done! a sua imagem neste momento já deve estar disponível para uso no novo ambiente Docker. Para conferir basta executar o comando

sudo docker image ls

Nginx Web Proxy + Docker para hospedagens

Fala comunidade tudo bem ? a ideia de hoje é montarmos um ambiente para hospedagens utilizando NGInx Web Proxy + Docker.

Estou levando em consideração o seguinte ambiente:

Sistema Operacional
Ubuntu Server 16.04.6 LTS

Aplicações
NGINX 1.10.3
Docker 18.09

1 – Preparando o Sistema Operacional
2 – Instalando o NGINX
3 – Instalando o Docker
4 – Configurando um ambiente Docker + Docker Compose
5 – Configurando o Proxy Reverso

1 – Preparando o Sistema Operacional

Primeiramente vamos certificar que o Apache não ficará rodando e escutando as conexões direcionadas a porta 80. Sendo assim vamos desabilitar o Apache com o comando abaixo:

sudo systemctl disable apache2

Habilitando o NGINX para iniciar com o sistema:

sudo systemctl enable nginx

Vamos agora atualizar nossa lista de pacotes do Ubuntu rodando o comando

sudo apt-get update

E depois vamos atualizar o sistema rodando o comando

sudo apt-get upgrade

2 – Instalando o NGINX

A instalando do NGINX é bem simples. Se o Apache estiver no momento que você rodar o apt-get install você não deverá encontrar problemas. Então vamos para o terminar e rodar o comando:

sudo apt-get install nginx

3 – Instalando o Docker

Para instalar o Docker devemos estar com a lista de pacotes atualizada. Então vamos certificar que está tudo atualizado antes de prosseguirmos.

Com o sistema atualizado vamos adicionar as GPG Keys dos Mirrors do Docker em nosso sistema para que possamos continuar.

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

na sequência rodaremos o comando curl com pipe para adicionar as chaves do apt

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

OK, para certificar que a chave de GPG foi adicionada corretamente vamos verificar as fingerprints

sudo apt-key fingerprint 0EBFCD88

O resultado deverá ser algo como:

pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) [email protected]
sub 4096R/F273FCD8 2017-02-22

Caso sua arquitetura de processador seja baseada em X86 você deverá utilizar o repositório

sudo add-apt-repository \
“deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable”

Depois de adicionado o repositório vamos rodar novamente o apt para atualizar a lista de pacotes

sudo apt-get update

Legal, agora que temos tudo pronto basta instalar o Docker então devemos rodar

sudo apt-get install docker-ce docker-ce-cli containerd.io

Agora que temos o Docker instalado podemos testar ele rodando

docker run hello-world

Precisaremos do orquestrador Docker Compose para gerenciar nossos containers então devemos instalar

sudo apt install docker-compose

4 – Configurando um ambiente Docker + Docker Compose

Perfeito, agora que temos tudo instalado vamos partir para a configuração do Docker com orquestração do Docker Compose. Estarei levando em consideração que iremos subir um website rodando Apache2 + PHP 7.1 + PhpMyAdmin + MySQL 5 então nossa receita seria algo como o arquivo abaixo:

version: '2'

services:
  jaccon_db:
    image: mysql:5.7
    container_name: jaccon_db
    ports:
      - "8000:3306"
    volumes:
      - ./database/data:/var/lib/mysql
      - ./database/initdb.d:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: quah3Aht3dua7iechaeN 
      MYSQL_DATABASE: jaccon
      MYSQL_USER: jaccon
      MYSQL_PASSWORD: Thahva6aeth6ohNie5ki

  jaccon_wp:
    depends_on:
      - jaccon_db
    image: wordpress:php7.1
    container_name: jaccon_wp
    ports:
      - "8001:80"
    restart: always
    links:
      - jaccon_db:mysql
    volumes:
      - ./src:/var/www/html
  
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: jaccon_phpmyadmin
    volumes:
      - ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
    links:
      - jaccon_db
    ports:
      - "8002:80"
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=jaccon_db

Você pode fazer o download do arquivo de exemplo do Docker no meu GitHub clicando aqui em download do arquivo

Este é um exemplo para você dar seus primeiros passos no Docker voltando mais para hosting de aplicações. Espero que tenha ajudado ai a comunidade.

Abs