Direto na Imagem

Laboratório

Será utilitzada a aplicação:

~/devops-simulador-caos/src$ ls
Dockerfile  package.json  server.ts  tsconfig.json  views

Editar o Dockerfile:

$ vim Dockerfile
FROM node:20.9.0
WORKDIR /app
COPY package*.json ./
RUN npm install
RUN apt update && apt install stress --yes
COPY . .
RUN npm run compile
HEALTHCHECK --interval=10s --timeout=5s --retries=1 --start-period=30s CMD ["curl","-f","http://localhost:3000/health"]
EXPOSE 3000
CMD ["npm", "start"]

Construir a imagem:

~/devops-simulador-caos/src$ docker image build \
          -t marcelodpbarbieri/simulador-caos:v2 \
          -f Dockerfile .
[+] Building 12.5s (13/13) FINISHED                              docker:default
 => [internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 332B                                       0.0s
 => [internal] load metadata for docker.io/library/node:20.9.0             1.8s
 => [auth] library/node:pull token for registry-1.docker.io                0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 53B                                           0.0s
 => [1/7] FROM docker.io/library/node:20.9.0@sha256:146bbe4eaee99ae885be2  0.2s
 => => resolve docker.io/library/node:20.9.0@sha256:146bbe4eaee99ae885be2  0.0s
 => => sha256:a6759aea6838201fb9b76b3ffccce537c745cef4b76 2.00kB / 2.00kB  0.0s
 => => sha256:03501b0671a4e8450444678df0aad9c78ecce5fe2f4 7.52kB / 7.52kB  0.0s
 => => sha256:146bbe4eaee99ae885be2a0a767f63a4b96032141d7 1.21kB / 1.21kB  0.0s
 => [internal] load build context                                          0.0s
 => => transferring context: 24.80kB                                       0.0s
 => [2/7] WORKDIR /app                                                     0.0s
 => [3/7] COPY package*.json ./                                            0.0s
 => [4/7] RUN npm install                                                  5.6s
 => [5/7] RUN apt update && apt install stress --yes                       3.1s
 => [6/7] COPY . .                                                         0.0s
 => [7/7] RUN npm run compile                                              1.3s
 => exporting to image                                                     0.2s
 => => exporting layers                                                    0.2s
 => => writing image sha256:fcf7250a5d8e31876ba86365cd12ec249c21dc6318bfe  0.0s
 => => naming to docker.io/marcelodpbarbieri/simulador-caos:v2             0.0s          

O healthcheck não foi exposto na construção, pois o sistema de arquivos não está sendo alterado. O healthcheck altera os metadados da imagem:

Subir a imagem para o Docker Registry:

Atualizar a tag latest:

Editar o arquivo compose.yaml e alterar a versão para v2:

Subir o Docker Compose:

Monitoramento:

Container em execução e saudável:

Caso seja utilizada a versão 1 da imagem, o healthcheck não seria habilitado:

Retornar para a versão 2 onde o healthcheck está habilitado:

Desabilitar o healthcheck no Docker Compose:

Last updated