<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Laura Damaceno de Almeida</title>
    <description>The latest articles on DEV Community by Laura Damaceno de Almeida (@lauradamacenoalmeida).</description>
    <link>https://dev.to/lauradamacenoalmeida</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F310395%2F497d5f3c-2bbf-4228-8927-fe4aa3b21ce0.jpeg</url>
      <title>DEV Community: Laura Damaceno de Almeida</title>
      <link>https://dev.to/lauradamacenoalmeida</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lauradamacenoalmeida"/>
    <language>en</language>
    <item>
      <title>Docker: criando o seu primeiro container
</title>
      <dc:creator>Laura Damaceno de Almeida</dc:creator>
      <pubDate>Sat, 22 Feb 2020 18:56:24 +0000</pubDate>
      <link>https://dev.to/lauradamacenoalmeida/docker-criando-o-seu-primeiro-container-113h</link>
      <guid>https://dev.to/lauradamacenoalmeida/docker-criando-o-seu-primeiro-container-113h</guid>
      <description>&lt;p&gt;Fala, empoderadas(os)!&lt;br&gt;
Vamos para uma breve introdução do Docker! Docker para quem não sabe, é uma ferramenta que facilita a criação e alterações de containers.&lt;br&gt;
Mas o que são containers?&lt;/p&gt;

&lt;p&gt;Containers é como se fosse uma casa que abrigará a minha aplicação. Ou seja, funcionando junto com o SO, rodando de forma isolada e independente.&lt;br&gt;
Essa ferramenta está em alta atualmente por conta da disseminação da cultura DevOps.&lt;br&gt;
DevOps é a integração do time de desenvolvimento com o time de operações, surgindo assim a sua sigla.&lt;br&gt;
Tratando-se de um conjunto de práticas que enfatizam a colaboração e comunicação entre as áreas de TI, podendo ser um recurso e uma cultura corporativa para a entrega contínua de software e serviços com mais rapidez e confiabilidade para o cliente, a fim de obter um feedback mais valioso do mesmo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P8TlorKJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1100/0%2Al7NgQ2jxRFZk2Anw" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P8TlorKJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1100/0%2Al7NgQ2jxRFZk2Anw"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  VM X Container
&lt;/h2&gt;

&lt;p&gt;Mas porque eu usaria ele, sendo que uma Máquina Virtual também pode armazenar minha aplicação?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leveza: VM’s são bem mais pesadas que containers, pois em cada VM precisamos instalar um SO e as dependências da aplicação, já os containers é executado junto com kernel da máquina.&lt;/li&gt;
&lt;li&gt;Agilidade: na hora de criar e remover aplicações.&lt;/li&gt;
&lt;li&gt;Facilidade: na hora de trabalhar com diferentes versões de linguagens e bibliotecas, pois o Docker encapsula todas as dependências de software associadas à execução de um programa.&lt;/li&gt;
&lt;li&gt;Menos custo operacional/manutenção: pois manter vários sistemas operacionais requer muito tempo de trabalho.&lt;/li&gt;
&lt;li&gt;Melhor utilização dos recursos.&lt;/li&gt;
&lt;li&gt;Oferece uma quantidade maior de ecossistemas e ferramentas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora que você já sabe os pontos positivos de se usar containers, vamos aprender como criar nosso primeiro container, neste post irei falar especificamente como construí-los, utilizando o Docker for windows.&lt;/p&gt;
&lt;h2&gt;
  
  
  Preparando a máquina
&lt;/h2&gt;

&lt;p&gt;Para instalar, você irá precisar ver se o seu computador contém os seguintes pré-requisitos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows 10 versão pro, enterprise ou education(para conferir isso, basta ir na barra de pesquisa do menu iniciar e procurar por “sistema”).&lt;/li&gt;
&lt;li&gt;X64.&lt;/li&gt;
&lt;li&gt;Virtualização habilitada (vá no seu gerenciador de tarefas, clique na aba “desempenho”, por padrão o windows já deixa habilitado).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Caso você não tenha nenhum desses requisitos acima, pode instalar o Docker toolbox, que faz a mesma coisa que o “Docker for windows” e já vem com as dependências necessárias para a sua execução.&lt;/p&gt;
&lt;h2&gt;
  
  
  Mas e se eu não utilizo o Windows, o que eu faço?
&lt;/h2&gt;

&lt;p&gt;Calma gente, dá para você aprender os comandos que irei ensinar online mesmo, chamada &lt;a href="https://labs.play-with-docker.com/"&gt;“Play with docker”&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A diferença entre o “Docker for Windows” e o “Docker toolbox” é que, no primeiro caso, utilizamos o terminal nativo do Windows. Já no segundo, ele instalará o Docker machine que deverá ser utilizado no lugar do terminal nativo.&lt;br&gt;
Para instalar, é necessário criar uma conta no docker hub e seguir os passos para a instalação, autorize o instalador. Depois de fazer o login, habilite o Hyper-v clicando em “Ok” e, com isso, o computador será reiniciado.&lt;br&gt;
Após a instalação vamos confirmar se está mesmo instalado, abra seu terminal do windows (powershell ou cmd) e digite:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ftNBNP4E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/960/0%2AIr2MOg1MzBelALpC" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ftNBNP4E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/960/0%2AIr2MOg1MzBelALpC"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antes de criarmos nosso primeiro container, temos que ter em mente que o Docker utiliza uma “receita de bolo”, sendo chamada de “imagem”, ou seja, uma série de instruções que o Docker faz para criar um container.&lt;br&gt;
Elas estão disponíveis em um repositório open source chamada Docker hub.&lt;br&gt;
Então se quiser criar um container que tenha o Ubuntu, lá vem a frase secreta...&lt;br&gt;
Coloque:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run ubuntu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8a9vRTne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/854/0%2Akhra0Gz1aCRvjWrO" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8a9vRTne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/854/0%2Akhra0Gz1aCRvjWrO"&gt;&lt;/a&gt;&lt;br&gt;
Sempre que formos criar um container utilizaremos a sintaxe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run imagem(imagem que queremos que ele utilize)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Exemplo, se eu quiser criar um container com node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run node
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Para verificarmos se foi criado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps -a
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Existem 2 tipos de comandos para listar os containers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;docker ps: exibe todos os containers ativos&lt;/li&gt;
&lt;li&gt;docker ps -a: exibe todos os containers criados&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Parabéns! Você acabou de criar seu primeiro container!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HiqJ5rom--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2Aqrs6KI0ycu2EmUBC" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HiqJ5rom--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2Aqrs6KI0ycu2EmUBC"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ai Laura, mas como eu vou saber que ele instalou mesmo o Ubuntu no meu container? Vamos lá hehehe&lt;br&gt;
Vamos criar um novo container só que dessa vez Vamos colocar a flag “-it”.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -it Ubuntu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Depois que ele criar meu container, ele vai abrir um cmd interativo para podermos manipula-lo. Se digitar qualquer comando para ubuntu, como por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo “Ola mundo”
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Para sair do terminal ubuntu basta dar um CRTL+C ou escrever exit.&lt;br&gt;
Para ativar um container já criado, basta utilizar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker attach idcontainer
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  E como remover um container?
&lt;/h2&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker rm idContainer
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Esse comando só remove containers inativos, então sempre verifique se o container está inativo antes de removê-lo, através do comando “Docker ps” se ele estiver ativo, pare a execução dele através do comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker stop idContainer
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Para buscar o id do container, podemos listar eles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps -a
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zo-SgO8b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1426/1%2AcVJKBZLifKe_WiiAqoyZFA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zo-SgO8b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1426/1%2AcVJKBZLifKe_WiiAqoyZFA.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
ID do container na primeira coluna&lt;/p&gt;

&lt;p&gt;Após o comando de remoção, se listarmos novamente, o container não estará mais lá.&lt;/p&gt;

&lt;h2&gt;
  
  
  Neste post você aprendeu a…
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Preparar sua máquina.&lt;/li&gt;
&lt;li&gt;Criar seu primeiro container.&lt;/li&gt;
&lt;li&gt;Listar os containers.&lt;/li&gt;
&lt;li&gt;Abrir um cmd interativo dentro do container.&lt;/li&gt;
&lt;li&gt;Iniciar novamente um container já criado.&lt;/li&gt;
&lt;li&gt;Remover um container.&lt;/li&gt;
&lt;li&gt;Pausar a execução de um container.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;E isso é tudo pessoal!! Agora vocês sabem como manipular um container sem dor de cabeça.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AqxAVntS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/998/1%2AkRJ3buv6d1vvGRI74Dw9RQ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AqxAVntS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/998/1%2AkRJ3buv6d1vvGRI74Dw9RQ.gif"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>introduction</category>
    </item>
    <item>
      <title>Generating wordcloud with tweets about the series “Anne with an E”</title>
      <dc:creator>Laura Damaceno de Almeida</dc:creator>
      <pubDate>Fri, 14 Feb 2020 03:36:20 +0000</pubDate>
      <link>https://dev.to/lauradamacenoalmeida/generating-wordcloud-with-tweets-about-the-series-anne-with-an-e-p1a</link>
      <guid>https://dev.to/lauradamacenoalmeida/generating-wordcloud-with-tweets-about-the-series-anne-with-an-e-p1a</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The series “Anne with an E” is gaining more and more space in the media for talking about important issues in a sensitive and subtle way, such as: racism, feminism and self-acceptance, in addition to making us reflect on how the simple things of world can be magnificent and that with imagination and kindness, we can go through all the situations of life.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is NLP?
&lt;/h2&gt;

&lt;p&gt;NLP or Natural Language Processing is a branch of Artificial intelligence that is dedicated to understanding the relationship of human language (spoken, written) and machine language.&lt;br&gt;
So I decided to generate a word cloud with with the users' tweets about this series.&lt;/p&gt;

&lt;p&gt;P.S: I made the codes used in this article available in my &lt;a href="https://github.com/lauraDamacenoAlmeida/Twitter_Analysis"&gt;Github&lt;/a&gt; repository.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is wordcloud?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/amueller/word_cloud"&gt;Word cloud&lt;/a&gt; or Wordcloud is used in the exploration of texts, to better understand which words are frequent in the sentences, and thus perform the possible treatments in them or better understand for example: what your users or customers are saying about a certain product or company . &lt;/p&gt;
&lt;h2&gt;
  
  
  Advantages of using wordcloud in analysis
&lt;/h2&gt;

&lt;p&gt;We can analyze thousands of text feedbacks and bring up the most cited terms, which help us to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;points of your brand that delight customers;&lt;/li&gt;
&lt;li&gt;items that do not meet the needs of your audience;&lt;/li&gt;
&lt;li&gt;problematic relationships during the shopping day;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And with all this we will have the most important topics related to the business and prioritize which ones are more important to prioritize, that is, we make more assertive decisions.&lt;/p&gt;
&lt;h3&gt;
  
  
  Extraction of tweets
&lt;/h3&gt;

&lt;p&gt;For extract tweets from Twitter you need to have an account in &lt;a href="https://developer.twitter.com/"&gt;Twitter Develper&lt;/a&gt; and install the &lt;a href="https://pypi.org/project/TwitterSearch/"&gt;TwitterSearch&lt;/a&gt; library, with this we can conect in Twitter's API and extract ours data. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Who knows next blog I can show you how can generate the API Keys and tokens in Twitter Developer! ;)&lt;/p&gt;
&lt;/blockquote&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;To make the filter in tweets, we use the ".set_keywords()" methods and we can filter to the tweet's language with the method ".set_language()"&lt;/p&gt;

&lt;p&gt;In this method I create a file called "tweets.json" for storage all those tweets, where I load it on my jupiter notebook turning it into a Dataframe to make it easier to manipulate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre processing
&lt;/h2&gt;

&lt;p&gt;It's very important make a pre processing in the tweets, because most of then will come with "stop words" or words considered irrelevant for our processing (preposition, articles and pronouns), we can remove the accents in the words, extra spaces and so on. That is, in this pre processing we transform this unstructured data into structured and multi-dimensional representations.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Batman is better than Superman&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After pre processing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Batman better Superman&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ArQrsJk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media0.giphy.com/media/1485wMdlDLG7mg/giphy.gif%3Fcid%3D790b7611648329afb0a4c574eb8dae670f8911ca942e021c%26rid%3Dgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ArQrsJk1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://media0.giphy.com/media/1485wMdlDLG7mg/giphy.gif%3Fcid%3D790b7611648329afb0a4c574eb8dae670f8911ca942e021c%26rid%3Dgiphy.gif" alt="" width="500" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In other words, our NLP model or our analyzes will be able to focus on the words that are really important to the business.&lt;/p&gt;

&lt;p&gt;For this I create a method to remove the accents, numbers and spaces.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://www.geeksforgeeks.org/removing-stop-words-nltk-python/"&gt;Stop words&lt;/a&gt; can affect our wordcloud because this type of visualization catches which phrases are most frequent among all and certainly the words “and, with, that, the” are very frequent. In this method I am generating tokens in the sentences so that I can facilitate the stop words and some punctuation (‘,’ ’.’, ’#’,etc...).&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;It's very important to say that we need import the stop words, so we will import NLTK library, in my example I imported portuguese stop words!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; stopwords = nltk.corpus.stopwords.words('portuguese')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Generating wordcloud
&lt;/h2&gt;

&lt;p&gt;To generate a wordcloud we need to pass a list of words, so I generated a list from our pre-processed phrases called "todas_palavras".&lt;/p&gt;

&lt;p&gt;To generate a wordcloud, we need to instantiate this "WordCloud ()" object and then use the ".generate ()" command to generate this wordcloud. So our code would look like this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;word_cloud = WordCloud( ).generate(todas_palavras)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;To display this word cloud we use the following commands:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plt.imshow(word_cloud, interpolation=”bilinear”)
plt.show()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;I created a method so that we can reuse our wordcloud in an easier way, but you can choose not to use methods.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;And your result should look like this:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PmIYXapK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/2788/1%2AC0svep__DYmlOAtzxHJesA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PmIYXapK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/2788/1%2AC0svep__DYmlOAtzxHJesA.png" alt="" width="880" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before concluding, it is important to note that wordcloud is an excellent visualization tool that facilitates the analysis of texts or text analysis, allowing the visualization of the frequency distribution of words and thus we can improve our pre-processing or the understanding of our users.&lt;/p&gt;

&lt;p&gt;That's all folks!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---5DJIbcb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/776/1%2Alv_3ooWwCkzrzevc_TTAmA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---5DJIbcb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/776/1%2Alv_3ooWwCkzrzevc_TTAmA.gif" alt="" width="388" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My &lt;a href="https://www.linkedin.com/in/laura-damaceno/"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nlp</category>
      <category>wordcloud</category>
      <category>python</category>
      <category>ai</category>
    </item>
    <item>
      <title>Ah….mas na minha máquina está funcionando! Como resolver esta situação usando imagens no Docker?</title>
      <dc:creator>Laura Damaceno de Almeida</dc:creator>
      <pubDate>Tue, 07 Jan 2020 01:19:35 +0000</pubDate>
      <link>https://dev.to/lauradamacenoalmeida/ah-mas-na-minha-maquina-esta-funcionando-como-resolver-esta-situacao-usando-imagens-no-docker-25g6</link>
      <guid>https://dev.to/lauradamacenoalmeida/ah-mas-na-minha-maquina-esta-funcionando-como-resolver-esta-situacao-usando-imagens-no-docker-25g6</guid>
      <description>&lt;p&gt;Fala empoderadas(os),&lt;br&gt;
Esse é meu segundo artigo sobre a ferramenta Docker, para quem não leu o primeiro e tem dúvidas sobre como construir um container, é só clicar &lt;a href="https://medium.com/devs-javagirl/docker-criando-o-seu-primeiro-cont%C3%AAiner-61ac022ceeef"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sempre tem aquele famoso problema no mundo de TI, onde quando vamos rodar a aplicação ela não funciona na nossa máquina e o colega diz a seguinte frase “Ah, mas na minha máquina está funcionando”, quem nunca ouviu ou disse essa frase que atire a primeira pedra!!&lt;/p&gt;

&lt;p&gt;Pois bem, ao utilizar o Docker, temos uma vantagem e ela se chama “imagem”. No artigo anterior dei uma breve introdução sobre ela, que seria basicamente uma receita de bolo composta por camadas para a construção de um container.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Tá, mas qual a vantagem de eu utilizá-la?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--05DBlpm9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2A-2p90y_0uWyrj2uI" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--05DBlpm9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2A-2p90y_0uWyrj2uI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simples, vários containers podem ser construídos a partir de uma única imagem, ou seja a mesma estrutura que tem na aplicação que você construiu, terá nos containers das pessoas do seu time, o que diminui drasticamente o tempo de deploy de um ambiente para o outro.&lt;/p&gt;

&lt;p&gt;Além disso você não precisa se preocupar com desvios de ambiente, ou seja diferentes versões das dependências instaladas em todos os ambientes que você implanta.&lt;br&gt;
Tendo em mente tudo isso, vale ressaltar que as imagens são geradas a partir de comando docker, exemplo “docker run node”, ou a partir do momento em que o Dockerfile estiver rodando.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Mas o que é Dockerfile?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EjU1Ko6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2ANwClLfAM452KxnU7" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EjU1Ko6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2ANwClLfAM452KxnU7"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dockerfile é um arquivo feito para automatizar o processo de execução de tarefas no Docker, ou seja ele contém uma série de instruções, comandos que você faria manualmente só que de uma forma automatizada.&lt;br&gt;
Ele pode ser compartilhado através do repositório aberto chamado Docker Hub, onde você pode fazer upload e utilizar quando necessitar.&lt;br&gt;
Neste arquivo iremos descrever todas as especificações que temos na aplicação.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Mas como eu crio uma imagem então?!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Calma pessoal, antes vamos criar um projeto com um arquivo chamado “app.py” e colar o código abaixo, onde utilizamos o Flask, um framework em python, você não precisar ter um conhecimento em python tá galera?!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask import Flask
app = Flask(__name__)
@app.route(“/”)
def hello():
return “Hello World”
if __name__ == “__main__”:
app.run(host=”0.0.0.0")
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l9goKMMx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2AZhZBUKtYDWt4J9Zd" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l9goKMMx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2AZhZBUKtYDWt4J9Zd"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O que você precisa saber sobre este código é que criamos um site que responde na porta default 5000, e para rodá-lo digitamos no prompt de comando:&lt;br&gt;
“python app.py”&lt;br&gt;
E colocar no navegador “localhost:5000”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L-Z5Dyut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1768/1%2A3R7bRN94WcF59NRPmi3Pfg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L-Z5Dyut--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1768/1%2A3R7bRN94WcF59NRPmi3Pfg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando criamos um container, temos esta saída gerada:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Pv2wjSOH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1592/1%2Aq-heYsYs-sqvH67pxZU7zQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Pv2wjSOH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1592/1%2Aq-heYsYs-sqvH67pxZU7zQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vocês estão vendo cada pedaço que ele está instalando? Se chamam camadas, são elas que constroem a imagem e é o que iremos definir no Dockerfile, cada comando é uma camada na imagem.&lt;/p&gt;

&lt;p&gt;Então vamos criar um arquivo chamado “dockerfile” no mesmo projeto que está meu código.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GOBEOJYt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1360/1%2AkM1USvOCdup3801kG6EiXA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GOBEOJYt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1360/1%2AkM1USvOCdup3801kG6EiXA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neste arquivo, vamos colocar as dependências do projeto com a seguinte sintaxe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM …
RUN …
ENTRYPOINT …
COPY …
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;· &lt;strong&gt;FROM:&lt;/strong&gt; declaramos a imagem inicial para a construção do comtainer, no nosso caso seria o python com a versão 3.6.1-alpine. É adicionado uma camada na imagem.&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;RUN:&lt;/strong&gt; instala as depedências. No nosso caso queremos que ele instale o Flask antes de executar o nosso código, portanto “pip install flask”. É adicionado mais uma camada na imagem.&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;ENTRYPOINT:&lt;/strong&gt; executa um comando quando o container é iniciado. No nosso caso queremos que ele rode o código, então “python app.py”.&lt;/p&gt;

&lt;p&gt;· &lt;strong&gt;COPY:&lt;/strong&gt; copia o arquivo app.py do seu computador para a imagem do docker. Adiciona mais uma camada na imagem.&lt;/p&gt;

&lt;p&gt;Então nosso Dockerfile fica assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM python:3.6.1-alpine
RUN pip install flask
ENTRYPOINT [“python”, “app.py”]
COPY app.py /app.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Para encapsular cada camada para a imagem, dentro da sua pasta digite o seguinte código:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;docker build -f dockerfile -t seu_User_Docker_Hub/nomedaImg .&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-f:&lt;/strong&gt; passar o nome do meu dockerfile&lt;br&gt;
&lt;strong&gt;-t:&lt;/strong&gt; passar o nome da imagem, como boa prática é recomendado colocar o usuário do Docker Hub/nome da imagem&lt;br&gt;
&lt;strong&gt;. :&lt;/strong&gt; pegar o arquivo do diretório local&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nO-5x9yt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/2158/1%2A0heoZE592LwPUMKdz0abPg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nO-5x9yt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/2158/1%2A0heoZE592LwPUMKdz0abPg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos listar as imagens que você tem no Docker e notar que a imagem que acabamos de criar está disponível para utilizarmos:&lt;br&gt;
&lt;strong&gt;docker image ls&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Eb3LSaiX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1580/1%2ApEH_Lvr5FIqa3MrNrtGbqQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Eb3LSaiX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1580/1%2ApEH_Lvr5FIqa3MrNrtGbqQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Vamos testar para ver se a aplicação está funcionando?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9ErUnzpx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2A8srZwYAduq_NaBxn" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9ErUnzpx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1000/0%2A8srZwYAduq_NaBxn"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para isso precisamos criar um container com a imagem criada. Lembra que nossa aplicação roda na porta 5000? Então, precisamos definir na criação do container a porta que ele vai rodar&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;docker run -p 5000:5000 seuNome/nomedaImg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JXHDPUpN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1502/1%2A3U89c8v4lVPfW2uxriKnyQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JXHDPUpN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1502/1%2A3U89c8v4lVPfW2uxriKnyQ.png"&gt;&lt;/a&gt;&lt;br&gt;
Ao digitar a url “localhost:5000”, você verá que ela está rodando normalmente!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lotl9QO---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1312/1%2ApaCBBhYBPDRzA8YlTNEGaA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lotl9QO---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1312/1%2ApaCBBhYBPDRzA8YlTNEGaA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Boa! Acabamos de criar uma imagem que roda localmente. Vamos agora disponibilizar o nosso Dockerfile no Docker Hub, para que outras pessoas possam utilizá-la também.&lt;/p&gt;

&lt;p&gt;Para isso, você vai precisar seguir os seguintes passos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Logar no Docker Hub:
&lt;strong&gt;docker login&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Criar uma tag para sua imagem
docker tag seu_User_Docker_Hub/nomedaImg python-hello-world&lt;/li&gt;
&lt;li&gt;Subir no Docker Hub
docker push seu_User_Docker_Hub/nomedaImg&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UfEZfWMH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1636/1%2A_ZOaNWItq76AnIFvGbTkig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UfEZfWMH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1636/1%2A_ZOaNWItq76AnIFvGbTkig.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Validar no seu Docker Hub
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HAfW1gn5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/2782/1%2AdnATWjyyeOBBhJjTGq1SQQ.png"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Parabéns pessoal, vocês acabaram de subir o Dockerfile de vocês, se uma pessoa quiser criar um container igual a imagem que rodamos anteriormente, ela conseguirá executar a aplicação!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8uj9hbeh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/998/0%2AkloVipRHoI71-3A1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8uj9hbeh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/998/0%2AkloVipRHoI71-3A1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/laura-damaceno/"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@lauradamaceno"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
