<?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: Eduardo | DevOps</title>
    <description>The latest articles on DEV Community by Eduardo | DevOps (@eduardo_ramos).</description>
    <link>https://dev.to/eduardo_ramos</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%2F522309%2F4fa0fead-2998-4807-9231-ba8dc9c6f291.jpeg</url>
      <title>DEV Community: Eduardo | DevOps</title>
      <link>https://dev.to/eduardo_ramos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eduardo_ramos"/>
    <language>en</language>
    <item>
      <title>Hadolint: AST para Dockerfile</title>
      <dc:creator>Eduardo | DevOps</dc:creator>
      <pubDate>Sun, 06 Mar 2022 14:44:49 +0000</pubDate>
      <link>https://dev.to/eduardo_ramos/hadolint-ast-para-dockerfile-2ihh</link>
      <guid>https://dev.to/eduardo_ramos/hadolint-ast-para-dockerfile-2ihh</guid>
      <description>&lt;p&gt;Hadolint é uma ferramenta interessante para realizar linter de arquivos Dockerfile. Preza pelas boas práticas e faz, inclusive, de shell bash incluído no Dockerfile. Um pequeno exemplo aqui abaixo usando o hadolint instalado diretamente pelo brew e usando imagem de contêiner.&lt;/p&gt;

&lt;p&gt;Exemplo de Dockerfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ brew install hadolint

$ hadolint Dockerfile

Dockerfile:6 DL3018 warning: Pin versions in apk add. Instead of `apk add &amp;lt;package&amp;gt;` use `apk add &amp;lt;package&amp;gt;=&amp;lt;version&amp;gt;`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O exemplo acima, pede para que seja discriminado a versão do pacote ao invés de usar a versão latest dos binários.&lt;/p&gt;

&lt;p&gt;É possível ignorar esta mensagem usando --ignore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ hadolint --ignore DL3018  Dockerfile

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

&lt;/div&gt;



&lt;p&gt;Usando Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$docker run --rm -i ghcr.io/hadolint/hadolint &amp;lt; Dockerfile

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

&lt;/div&gt;



&lt;p&gt;Para ignorar nas imagens docker, basta incluir uma linha com comentário com código de erro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0

# hadolint ignore=DL3018
# hadolint ignore=DL3006,3013 (e demais separados por vírgulas)

RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repita o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ docker run --rm -i ghcr.io/hadolint/hadolint &amp;lt; Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saiba mais em: &lt;a href="https://githubhelp.com/hadolint/hadolint"&gt;https://githubhelp.com/hadolint/hadolint&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  hadolint
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Timezone pt_BR</title>
      <dc:creator>Eduardo | DevOps</dc:creator>
      <pubDate>Sun, 06 Mar 2022 14:19:20 +0000</pubDate>
      <link>https://dev.to/eduardo_ramos/timezone-ptbr-1neg</link>
      <guid>https://dev.to/eduardo_ramos/timezone-ptbr-1neg</guid>
      <description>&lt;p&gt;Se você pretende manter o horário dos contêineres com mesmo timezone do host hospedeiro, legal configurar as variáveis no momento de subir o contêiner. Aqui vai um exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: "3.9"
services:
  web:
    build: .
    ports:
      - "8001:5000"
    environment:
      - LANG=pt_BR.UTF-8
      - LANGUAGE=pt_BR:pt:en
      - TZ=America/Sao_Paulo
  redis:
    image: "redis:alpine"
    environment:
      - LANG=pt_BR.UTF-8
      - LANGUAGE=pt_BR:pt:en
      - TZ=America/Sao_Paulo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Como instalar o Jenkins via Docker</title>
      <dc:creator>Eduardo | DevOps</dc:creator>
      <pubDate>Sat, 28 Nov 2020 19:22:08 +0000</pubDate>
      <link>https://dev.to/eduardo_ramos/como-instalar-o-jenkins-via-docker-4eph</link>
      <guid>https://dev.to/eduardo_ramos/como-instalar-o-jenkins-via-docker-4eph</guid>
      <description>&lt;p&gt;Olá, amigo! Neste post vamos instalar o Jenkins utilizando Docker.&lt;/p&gt;

&lt;p&gt;O que é o Jenkins?&lt;br&gt;
É um sistema de automação de processos que envolve os mais diversos tipos de tarefas de integração e deploy contínuo.&lt;/p&gt;

&lt;p&gt;Foi criado em 2004 por um desenvolvedor da Sun chamado Kohsuke Kawaguchi e na época chamava-se Hudson. Depois da compra pela Oracle da Sun rolou a preocupação se continuaria ou não open source e tal, mas, a comunidade resolveu fazer um fork do projeto Hudson e com isso deu origem ao Jenkins.&lt;/p&gt;

&lt;p&gt;O Jenkins possui mais de mil plugins e tem como premissa automatiza os mais diversos tipos de tarefas. Faz o check-out do o repositório logo após o commit, ou seja, toda a vez que for realizado um commit no git, ele faz "automagicamente" o check-out e inicia o processo de build e tudo o mais que tiver configurado na esteira e mais: mostra todos os passos que foram realizados jogando no output dos logs.&lt;/p&gt;

&lt;p&gt;Vamos aos passos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Você deve ter o docker instalado e rodando na sua máquina (&lt;a href="https://docs.docker.com/engine/install/"&gt;https://docs.docker.com/engine/install/&lt;/a&gt;);&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Logando no Docker Hub:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;➜ ~ docker login&lt;br&gt;&lt;br&gt;
Authenticating with existing credentials...&lt;br&gt;
Login Succeeded&lt;/p&gt;

&lt;p&gt;➜  ~ docker pull jenkins/jenkins&lt;br&gt;
Using default tag: latest&lt;br&gt;
latest: Pulling from jenkins/jenkins&lt;br&gt;
3192219afd04: Pull complete &lt;br&gt;
17c160265e75: Pull complete &lt;br&gt;
cc4fe40d0e61: Pull complete &lt;br&gt;
9d647f502a07: Pull complete &lt;br&gt;
d108b8c498aa: Pull complete &lt;br&gt;
1bfe918b8aa5: Pull complete &lt;br&gt;
dafa1a7c0751: Pull complete &lt;br&gt;
1aac8c69350b: Pull complete &lt;br&gt;
5ba31155797f: Pull complete &lt;br&gt;
1604a964a92a: Pull complete &lt;br&gt;
a047c2662742: Pull complete &lt;br&gt;
c7590000f6e1: Pull complete &lt;br&gt;
b5caeecd3ac5: Pull complete &lt;br&gt;
3b2f84c2b5c6: Pull complete &lt;br&gt;
3b867fccf4b4: Pull complete &lt;br&gt;
42f6598b3436: Pull complete &lt;br&gt;
23ef68d2e735: Pull complete &lt;br&gt;
6bf3d3fbec2e: Pull complete &lt;br&gt;
8e8cf44f4bfb: Pull complete &lt;br&gt;
b19f11a5cf28: Pull complete &lt;br&gt;
Digest: sha256:a26c4c0f57e14056178a8c0044ab23fdd072b7236e48fda2b6a0697bee71c982&lt;br&gt;
Status: Downloaded newer image for jenkins/jenkins:latest&lt;br&gt;
docker.io/jenkins/jenkins:latest&lt;/p&gt;

&lt;p&gt;➜  ~ docker run -d -v /var/run/docker.sock:/var/run/docker.sock  -v ${PWD}/jenkins:/var/jenkins_home  -p 8080:8080  jenkins/jenkins &lt;br&gt;
4b3353fe4d4cd19564355595b15bece2b14bdb1b060f0f2809028dba1157286a&lt;/p&gt;

&lt;p&gt;Acesse a url &lt;a href="http://localhost:8080"&gt;http://localhost:8080&lt;/a&gt; mas aguarde uns instantes até que esteja disponível para configuração de acesso. &lt;em&gt;Unlock Jenkins&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Acesse a pasta do Jenkins no seu home e execute o seguinte comando:&lt;/p&gt;

&lt;p&gt;➜  jenkins ~ cat secrets/initialAdminPassword&lt;br&gt;&lt;br&gt;
d326226d93824e38a669f678fd8bd37c&lt;/p&gt;

&lt;p&gt;Copie esta chave e cole lá na página.&lt;/p&gt;

&lt;p&gt;Passará para a próxima tela: &lt;em&gt;Customize Jenkins&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Instale os plugins sugeridos e aguarde a conclusão (demora um pouquinho mesmo).&lt;/p&gt;

&lt;p&gt;Em seguida, vai passar para a tela de criação do usuário administrador &lt;em&gt;Create First Admin User&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Siga em frente até chegar na tela &lt;em&gt;Jenkins is ready!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ok chegamos ao final com a instalação do Jenkins.&lt;/p&gt;

&lt;p&gt;No próximo post, mostro como executar um pipeline simples usando essa maravilhosa ferramenta.&lt;/p&gt;

&lt;p&gt;Até mais!&lt;/p&gt;

&lt;h1&gt;
  
  
  Jenkins #Docker #Automation #ContinuosDelivery
&lt;/h1&gt;

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