<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2019-11-27T16:59:14+00:00</updated><id>/feed.xml</id><title type="html">Adriano Neres</title><subtitle>Um blog sobre tecnologia escrito por Adriano Neres.</subtitle><entry><title type="html">Configurando um ambiente de desenvolvimento Node.js</title><link href="/node/2019/08/16/configurando-um-ambiente-de-desenvolvimento-nodejs.html" rel="alternate" type="text/html" title="Configurando um ambiente de desenvolvimento Node.js" /><published>2019-08-16T16:00:00+00:00</published><updated>2019-08-16T16:00:00+00:00</updated><id>/node/2019/08/16/configurando-um-ambiente-de-desenvolvimento-nodejs</id><content type="html" xml:base="/node/2019/08/16/configurando-um-ambiente-de-desenvolvimento-nodejs.html">&lt;p&gt;Os passos para instalação e configuração devem ser executados via linha de comando, utilizando um gerenciador de pacotes.&lt;/p&gt;

&lt;p&gt;Se você usa uma distribuição de Linux é provável que já possua um gerenciador de pacotes padrão. Se utiliza Windows ou Mac OSX recomendarei um gerenciador para cada um destes sistemas operacionais.&lt;/p&gt;

&lt;p&gt;Para garantir que os passos para instalação dos gerenciadores de pacote permaneçam atualizados deixarei apenas os links para a página contendo o processo de instalação de cada um. Com ele instalado poderemos prosseguir com a configuração do ambiente.&lt;/p&gt;

&lt;h2 id=&quot;1-gerenciador-de-pacotes&quot;&gt;1. Gerenciador de pacotes&lt;/h2&gt;

&lt;h3 id=&quot;mac-osx&quot;&gt;Mac OSX&lt;/h3&gt;

&lt;p&gt;Usuários de Mac OSX podem optar pelo &lt;a href=&quot;https://brew.sh/index_pt-br&quot;&gt;Homebrew&lt;/a&gt;. Este é um ótimo gerenciador de pacotes e amplamente utilizado pelos usuários desta plataforma.&lt;/p&gt;

&lt;p&gt;O processo de instalação é descrito na própria página inicial do Homebrew.&lt;/p&gt;

&lt;h3 id=&quot;windows&quot;&gt;Windows&lt;/h3&gt;

&lt;p&gt;Para usuários de Windows recomendo a utilização do &lt;a href=&quot;https://chocolatey.org&quot;&gt;Chocolatey&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;O processo de instalação é bem simples e pode ser realizado via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd.exe&lt;/code&gt; ou via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PowerShell.exe&lt;/code&gt;. Para instalá-lo, execute os passos descritos na &lt;a href=&quot;https://chocolatey.org/install&quot;&gt;página de instalação&lt;/a&gt; do Chocolatey.&lt;/p&gt;

&lt;h2 id=&quot;2-nvm&quot;&gt;2. NVM&lt;/h2&gt;

&lt;p&gt;Você poderia pular esta etapa e instalar uma versão do Node.js diretamente. No entanto, recomendo que instale primeiro o NVM e, por meio dele, configure as versões de Node.js que precisar.&lt;/p&gt;

&lt;h4 id=&quot;mas-afinal-o-que-é-e-para-que-serve-o-nvm&quot;&gt;Mas, afinal, o que é e para que serve o NVM?&lt;/h4&gt;

&lt;p&gt;O NVM (Node Version Manager) é um gerenciador de versões do Node.js.&lt;/p&gt;

&lt;p&gt;Ele é útil quando precisamos ter várias versões diferentes no Node.js instaladas em nossa máquina.&lt;/p&gt;

&lt;h4 id=&quot;e-por-que-eu-precisaria-de-mais-de-uma-versão-do-nodejs-instalada-na-minha-máquina&quot;&gt;E por que eu precisaria de mais de uma versão do Node.js instalada na minha máquina?&lt;/h4&gt;

&lt;p&gt;Se você trabalha com vários projetos que utilizam Node.js, pode ser que a versão necessária para cada um deles seja diferente. Nesse caso, o NVM vai te ajudar a controlar qual versão será utilizada em cada momento.&lt;/p&gt;

&lt;h4 id=&quot;e-como-eu-instalo-o-nvm&quot;&gt;E como eu instalo o NVM?&lt;/h4&gt;

&lt;p&gt;Isso depende do Sistema Operacional e do gerenciador de pacotes utilizado:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt; via &lt;strong&gt;curl&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl &lt;span class=&quot;nt&quot;&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Mac OSX&lt;/strong&gt; via &lt;strong&gt;Homebrew&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;nvm
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt; via &lt;strong&gt;Chocolatey&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;choco &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;nvm
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Após a instalação recomendo reiniciar o terminal para garantir que as configurações do NVM sejam carregadas.&lt;/p&gt;

&lt;h2 id=&quot;3-nodejs&quot;&gt;3. Node.js&lt;/h2&gt;

&lt;p&gt;Com o NVM instalado basta executar o comando a seguir para instalar a última versão estável.&lt;/p&gt;

&lt;p&gt;Se você utiliza &lt;strong&gt;Windows&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;nvm &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Se utiliza &lt;strong&gt;Linux&lt;/strong&gt; ou &lt;strong&gt;Mac OSX&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;nvm &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;node &lt;span class=&quot;nt&quot;&gt;--lts&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;E para selecioná-la como versão padrão:&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;nvm use &lt;span class=&quot;nt&quot;&gt;--lts&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Para verificar se o Node.js foi instalado e configurado corretamente:&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;node &lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;A saída do comando anterior deve ser a versão instalada em sua máquina.&lt;/p&gt;

&lt;h2 id=&quot;4-yarn&quot;&gt;4. Yarn&lt;/h2&gt;

&lt;p&gt;A instalação do Yarn é opcional. Particularmente, eu gosto de utilizá-lo, mas fica a seu critério (ou à de seu time).&lt;/p&gt;

&lt;h4 id=&quot;mas-afinal-o-que-é-e-pra-que-serve-o-yarn&quot;&gt;Mas, afinal, o que é e pra que serve o Yarn?&lt;/h4&gt;

&lt;p&gt;O Yarn é um gerenciador de dependências. É uma opção ao gerenciador padrão do Node.js - o npm.&lt;/p&gt;

&lt;p&gt;Ele te possibilitará, entre outras coisas, instalar, desinstalar e configurar as dependências do seu projeto.&lt;/p&gt;

&lt;h4 id=&quot;e-como-eu-instalo-o-yarn&quot;&gt;E como eu instalo o Yarn?&lt;/h4&gt;

&lt;p&gt;Isso também depende do Sistema Operacional utilizado.&lt;/p&gt;

&lt;p&gt;Felizmente o Yarn disponibiliza uma página onde encontramos o processo de instalação descrito com detalhes.&lt;/p&gt;

&lt;p&gt;Para instalá-lo, visite a &lt;a href=&quot;https://yarnpkg.com/lang/en/docs/install/&quot;&gt;página de instalação do Yarn&lt;/a&gt;, seleciona o Sistema Operacional e siga o processo referente ao gerenciador de pacotes que você utiliza.&lt;/p&gt;</content><author><name></name></author><summary type="html">Os passos para instalação e configuração devem ser executados via linha de comando, utilizando um gerenciador de pacotes.</summary></entry><entry><title type="html">Configurando Gogs com MySQL no Docker</title><link href="/docker/2018/02/28/configurando-gogs-com-mysql-no-docker.html" rel="alternate" type="text/html" title="Configurando Gogs com MySQL no Docker" /><published>2018-02-28T12:53:10+00:00</published><updated>2018-02-28T12:53:10+00:00</updated><id>/docker/2018/02/28/configurando-gogs-com-mysql-no-docker</id><content type="html" xml:base="/docker/2018/02/28/configurando-gogs-com-mysql-no-docker.html">&lt;p&gt;Algumas vezes, principalmente em ambientes corporativos, pode ser necessário configurar um servidor Git. O Gogs é um ótima alternativa para isso.&lt;/p&gt;

&lt;p&gt;Criaremos um compose file utilizando as imagens do &lt;a href=&quot;https://hub.docker.com/_/mysql/&quot;&gt;MySQL&lt;/a&gt; e do &lt;a href=&quot;https://hub.docker.com/r/gogs/gogs/&quot;&gt;Gogs&lt;/a&gt;. Por isso é interessante baixa-las do Docker Hub para seu repositório local, caso ainda não tenha feito:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;  docker pull mysql:5.7
  docker pull gogs/gogs&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;compose-file&quot;&gt;Compose file&lt;/h2&gt;

&lt;p&gt;Crie o arquivo &lt;strong&gt;docker-compose.yml&lt;/strong&gt; e adicione o conteúdo:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yml&quot; data-lang=&quot;yml&quot;&gt;  &lt;span class=&quot;na&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;3'&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;gogs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;gogs/gogs&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;container_name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;gogs&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;restart&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;always&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;ports&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;10022:22&quot;&lt;/span&gt;
        &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;10080:3000&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;networks&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;gogs-network&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;volumes&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/var/gogs/gogs-volume:/data&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;depends_on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;mysql&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mysql:5.7&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;container_name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mysql&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;restart&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;always&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;environment&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;root&quot;&lt;/span&gt;
        &lt;span class=&quot;na&quot;&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;gogs&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;networks&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; 
        &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;gogs-network&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;volumes&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/var/gogs/mysql-volume:/var/lib/mysql&quot;&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;networks&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;gogs-network&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;driver&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;bridge&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;No diretório onde o arquivo foi criado execute o comando:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;  docker-compose up &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Acesse a interface de configuração do Gogs pelo navegador, acessando a url &lt;a href=&quot;http://localhost:10080&quot;&gt;http://localhost:10080&lt;/a&gt; e prossiga com as configurações iniciais da ferramenta.&lt;/p&gt;

&lt;h2 id=&quot;primeiro-acesso-ao-gogs-e-configuração-inicial-pela-interface&quot;&gt;Primeiro acesso ao Gogs e configuração inicial pela interface&lt;/h2&gt;

&lt;p&gt;Ao acessar pela primeira vez a interface do Gogs pela interface disponível em &lt;a href=&quot;http://localhost:10080&quot;&gt;http://localhost:10080&lt;/a&gt;, será possível visualizar um formulário para efetuar a configuração inicial da ferramenta. Alguns valores podem ser um pouco confusos ao efetuar essa configuração então segue um guia de como fazê-los baseado na configuração de nossos containers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Repository root path&lt;/strong&gt;: Deixe o valor padrão (/home/git/gogs-repositories), pois o script de inicialização do Gogs (start.sh) possui um link simbólico para este diretório. É claro que é possível alterar depois pelo arquivo de configuração, mas inicialmente é preferível inicia-lo assim.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Run user&lt;/strong&gt;: Deixe o valor padrão aqui também, pois o script build.sh já possui um apontamento para o usuário git.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Domain&lt;/strong&gt;: Informe o IP do Docker host, ou o DNS deste host na rede, para que seja possível acessar o Gogs pela rede.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;SSH Port&lt;/strong&gt;: Informe a porta do Docker Host para qual a porta 22 do container foi mapeada. No nosso caso será a porta 10022.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;HTTP Port&lt;/strong&gt;: Ao contrário da configuração anterior, a porta a ser informada aqui não é a correspondente no Docker Host, mas sim a do próprio container. No nosso caso deixaremos a porta 3000.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Application URL&lt;/strong&gt;: Esta é uma combinação do &lt;strong&gt;Domain&lt;/strong&gt; e da porta HTTP, desta vez a do prório Docker Host. No nosso caso será &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://{IP}:10080&lt;/code&gt;, substituindo &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;{IP}&lt;/code&gt; pelo IP do Docker Host.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;entendendo-o-compose-file&quot;&gt;Entendendo o compose file&lt;/h2&gt;

&lt;p&gt;Apesar da análise não estar na ordem em que as configurações foram escritas, preferi faze-la desta forma para facilitar o entendimento.&lt;/p&gt;

&lt;h3 id=&quot;configurando-a-rede&quot;&gt;Configurando a rede&lt;/h3&gt;

&lt;p&gt;Primeiramente é necessário garantir que os containers estejam na mesma rede. Isso porque em cada execução o docker vincula um IP diferente ao container iniciado. Por esse motivo a comunicação entre eles deverá ser feita pelos nomes de cada um e não diretamente pelo IP. O fato é que não é possível fazer este vínculo por nome utilizando a rede padrão.&lt;/p&gt;

&lt;p&gt;Para resolver isso, então, na sessão &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;networks&lt;/code&gt; definimos uma rede, a qual damos o nome de &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gogs-network&lt;/code&gt; e que será vinculada tanto ao container do Gogs quanto ao do MySQL.&lt;/p&gt;

&lt;h3 id=&quot;configurando-o-mysql&quot;&gt;Configurando o MySQL&lt;/h3&gt;

&lt;p&gt;Na sessão &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mysql&lt;/code&gt; fazemos a configuração do banco de dados que armazenará os dados de configuração do Gogs. Em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image&lt;/code&gt; definimos a imagem e versão (mysql:5.7) e em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container_name&lt;/code&gt; damos um nome para o container referente ao MySQL que será criado quando executarmos o compose file. Este nome é importante porque será por ele, e não pelo IP, que faremos o vínculo da base de dados com o Gogs.&lt;/p&gt;

&lt;p&gt;Em seguida, em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;restart&lt;/code&gt;, definimos o comportamento do MySQL ao executarmos este arquivo e então chegamos nas configurações sensíveis da base de dados.&lt;/p&gt;

&lt;p&gt;Em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;environment&lt;/code&gt; configuramos as variáveis de ambiente do MySQL. As duas variáveis utilizadas no script são variáveis definidas pela própria imagem do MySQL e que, quando vinculadas, refletem na configuração da base de dados. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MYSQL_ROOT_PASSWORD&lt;/code&gt; é a variável que define a senha do usuário root do MySQL e &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MYSQL_DATABASE&lt;/code&gt; é a variável que define o nome do schema que será criado ao inicializar o container.&lt;/p&gt;

&lt;p&gt;Em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;networks&lt;/code&gt; vinculamos a rede que definimos anteriormente.&lt;/p&gt;

&lt;p&gt;E em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;volumes&lt;/code&gt; definimos um volume, onde os dados serão escritos no Docker Host. Neste caso eles serão escritos no diretório &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/gogs/mysql-volume&lt;/code&gt; no Docker Host.&lt;/p&gt;

&lt;h3 id=&quot;configurando-o-gogs&quot;&gt;Configurando o Gogs&lt;/h3&gt;

&lt;p&gt;Na sessão &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gogs&lt;/code&gt; é onde faremos a configuração do nosso servidor Git. Assim como na configuração do MySQL apontamos a imagem, damos um nome ao container que será criado na execução do compose file e definimos o comportamento do serviço para reiniciar automaticamente caso ele pare ou aconteça algum erro durante sua execução.&lt;/p&gt;

&lt;p&gt;Em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ports&lt;/code&gt; definimos as portas que serão vinculadas à suas correspondentes no container. Neste caso vinculamos as portas 10022 e 10080 do Docker Host às portas 22 e 3000 do container, respectivamente. Nesta ordem, também, elas representam as portas que responderão às chamadas SSH e HTTP, possibilitando o acesso aos repositórios por meio destes protocolos.&lt;/p&gt;

&lt;p&gt;Em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;networks&lt;/code&gt;, assim como fizemos na configuração do MySQL, vinculamos a rede que criamos, de forma que, estando ambos na mesma rede, garantimos que será possível realizar a comunicação entre eles.&lt;/p&gt;

&lt;p&gt;Em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;volumes&lt;/code&gt; configuramos o diretório onde os arquivos do Gogs, inclusive os próprios códigos-fontes dos projetos que enviarmos para este servidor, serão escritos. Neste caso eles serão escritos em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/gogs/gogs-volume&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;E, finalmente, em &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;depends_on&lt;/code&gt; vinculamos o valor &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mysql&lt;/code&gt;. Precisamos desta configuração para garantir que o container do Gogs, ao executarmos o compose file, seja iniciado somente quando o container do MySQL estiver disponível, evitando assim possíveis problemas na tentativa de tentar acessar a base de dados “antes da hora”.&lt;/p&gt;</content><author><name></name></author><summary type="html">Algumas vezes, principalmente em ambientes corporativos, pode ser necessário configurar um servidor Git. O Gogs é um ótima alternativa para isso.</summary></entry></feed>