2. Rafael Gomes
Pai de um menino
DevOps Engineer #PayCertify
Soteropolitano
Docker Captain
Membro do Core Team do DevOpsDays
#devops
#docker
INICIATIVAS
Raul Hacker Club
Gatilho Kosmico: gatilhokosmico.com.br
CONTATOS
@gomex
https://gomex.me/
https://www.linkedin.com/in/rbgomes/
3. O que estou fazendo?
Docker para Desenvolvedores
Pague quanto quiser
Inclusive nada
Aberto
Você só precisa citar o autor
Colaborativo
https://github.com/gomex/docker-para-desenvolvedores
Link
https://leanpub.com/dockerparadesenvolvedores
4. O que estou fazendo?
Gatilho Kosmico
Um podcast diverso
A ideia é unir conhecimentos
Tem um programa sobre DevOps
"DevOps é cargo?" :)
Colaborativo
Tem alguma sugestão?
Onde baixar
http://gatilhokosmico.com.br
Não é gatinho cósmico, ok? :P
20. 1. Não pode demorar o build da imagem
2. Possibilidade de manter cache de instalação
de gems
3. Possibilidade de debugar o código da gem
4. Armazenar histórico irbrc
5. Precisa automatizar o primeiro uso (db
creation, migration e etc)
6. Usuário diferente de root
21. Exemplo do Dockerfile
FROM ruby:2.5.1 as builder
RUN curl -sL
https://deb.nodesource.com/setup_8.x |
bash - &&
curl -sS
https://dl.yarnpkg.com/debian/pubkey.g
pg | apt-key add - &&
echo "deb
https://dl.yarnpkg.com/debian/ stable
main" | tee
/etc/apt/sources.list.d/yarn.list
ARG NODE_DATE_INSTALL=20180710
RUN apt-get update
&& apt-get install -y locales
graphviz
imagemagick
postgresql-client-9.6
yarn
nodejs
&& echo "en_US.UTF-8 UTF-8" >
/etc/locale.gen && /usr/sbin/locale-gen
&&
rm -rf /var/lib/apt/lists/*
25. 1. Não pode demorar o build da imagem
2. Possibilidade de manter cache de instalação
de gems
3. Possibilidade de debugar o código da gem
4. Armazenar histórico irbrc
5. Precisa automatizar o primeiro uso (db
creation, migration e etc)
6. Usuário diferente de root
26.
27. Exemplo do Makefile
dev: ## Start complete app dev environment
docker-compose up --build
dev-first: ## Start complete app dev environment
docker-compose rm -f
docker-compose build
docker-compose run app bundle install --gemfile=Gemfile
docker-compose run app yarn install
docker-compose run app rails db:drop
docker-compose run app rails db:create db:migrate db:seed
docker-compose stop
28. 1. Não pode demorar o build da imagem
2. Possibilidade de manter cache de instalação
de gems
3. Possibilidade de debugar o código da gem
4. Armazenar histórico irbrc
5. Precisa automatizar o primeiro uso (db
creation, migration e etc)
6. Usuário diferente de root
34. Exemplo do Dockerfile do Docker-lint
FROM projectatomic/dockerfile-lint:latest
LABEL maintainer "Rafael Gomes
<rafael.gomes@paycertify.com>"
COPY default_rules.yaml /rules/default_rules.yaml
35. Exemplo do default_rules do Docker-lint
required_instructions:
-
instruction: "EXPOSE"
count: 1
level: "info"
message: "There is no 'EXPOSE' instruction"
description: "Without exposed ports how will the service be accessed?"
reference_url:
- "https://docs.docker.com/engine/reference/builder/"
- "#expose"
43. Dockerfile MultiStage Build
FROM ruby:2.5.1 as builder
…
FROM builder as install
<Copia gemfile e package.json para instalar pacotes nodes e gems>
FROM install as preprod
<Copia o código e compila os assets do node>
66. Rafael Gomes
Pai de um menino
DevOps Engineer #PayCertify
Soteropolitano
Docker Captain
Membro do Core Team do DevOpsDays
#devops
#docker
INICIATIVAS
Raul Hacker Club
Core team do DevOpsDays
CONTATOS
@gomex
https://gomex.me/
https://www.linkedin.com/in/rbgomes/