diff --git a/source/pages/guides/docker-fundamentals.md b/source/pages/guides/docker-fundamentals.md index 58828e2a3b5c2fa16fc5f708e8c160f862bfc935..46e29fe0b9ae94ec62a39ca8cd4f571ecedda692 100644 --- a/source/pages/guides/docker-fundamentals.md +++ b/source/pages/guides/docker-fundamentals.md @@ -722,7 +722,45 @@ Para ver em detalhes como é feito o cache de camadas do Docker na hora do ::: #### ARG e ENV -TODO: :) +`NODE_ENV` for `production` no Dockerfile então haverá uma variável de ambiente +no contêner chamada `NODE_ENV` que terá o valor `production`. + +:::{note} +Mais à frente veremos o comando `docker exec`, que permitirá interagir com um +contêiner em execução, assim poderemos verificar as variáveis de ambiente nela +e interagir com todo o sistema de arquivos utilizando uma *shell* como bash. +::: + +Isso nem sempre é o comportamento desejado. É possível que alguma variável de +ambiente seja apenas necessária no momento da criação da imagem, para comandos +executados dentro dela. + +Uma solução para isso pode ser incluir a variável de ambiente na linha de +comando executada: + +```Dockerfile +RUN DEBIAN_FRONTEND=noninteractive apt update +... +RUN DEBIAN_FRONTEND=noninteractive apt upgrade +``` + +Entretanto isso gera duplicação caso a mesma variável precise ser utilizada +mais de uma vez. Para evitar isso existe a instrução `ARG`, que essencialmente +faz a mesma coisa que a `ENV`, mas a variável de ambiente não é passada para +o contêiner. O exemplo dado acima seria reescrito como: + +```Dockerfile +ARG DEBIAN_FRONTEND=noninteractive +RUN apt update +... +RUN apt upgrade +``` + +Entretanto `ARG` é ainda mais poderoso + +:::{seealso} +TODO: Passando argumentos e variáveis de ambiente por linha de comando. +::: #### COPY e RUN O comando `COPY` copia arquivos do *host* para o contêiner. Seu uso avançado @@ -791,6 +829,11 @@ root@devops: ~/node-test# Perceba que não vimos o output do contêiner, e no mesmo terminal pudemos executar `docker ps` para ver que o contêiner estava sim em execução. +:::{seealso} +Para mais informações sobre a CLI do `docker attach` veja a [documentação +oficial](https://docs.docker.com/reference/cli/docker/container/attach/). +::: + #### Vendo Logs Mas e se quisermos ver o output do contêiner? Para isso existe o comando `docker logs <identificador>`, cujo funcionamento é similar ao comando `tail`, @@ -844,10 +887,16 @@ em particular são bem relevantes para o uso com esse comando: seja executado em modo `attached`. - `--tty`/`-t`: Aloca um pseudo-TTY. -:::{seealso} +:::{note} TODO: explicar TTY? ::: +:::{seealso} +Para mais informações sobre a CLI do `docker exec` veja a [documentação +oficial](https://docs.docker.com/reference/cli/docker/container/exec/) +::: + + ## Disco persistente com **volumes** Caso ainda não tenha reparado, sempre que executamos um contêiner ele tem seus próprios arquivos, muito similar a uma máquina virtual. Entretanto, toda vez que