From 6c8b6cdbd7d73473c629fdcce58b1e9d15ebd375 Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Thu, 12 May 2016 13:48:22 -0300 Subject: [PATCH 01/12] Cria arquivo Dockerfile inicial docker build -t funcoeszz . docker run funcoeszz cores --- Dockerfile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..e6cac8ab7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM debian +MAINTAINER Aurelio Jargas + +RUN apt-get update && apt-get install -y bc curl lynx + +COPY . /app +WORKDIR /app + +ENV PATH /app:$PATH +ENV ZZPATH /app/funcoeszz +ENV ZZDIR /app/zz + +# Needed by functions --help (see core) +ENV PAGER more + +ENTRYPOINT ["bash", "funcoeszz"] +CMD ["--help"] From 2a6fa16b1c9bff26f2cfbecb836dcaacb769f860 Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Thu, 12 May 2016 13:52:24 -0300 Subject: [PATCH 02/12] =?UTF-8?q?Especifica=20a=20vers=C3=A3o=20do=20Debia?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Seguindo o conselho de: http://crosbymichael.com/dockerfile-best-practices-take-2.html --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e6cac8ab7..c6cfdf2d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian +FROM debian:jessie MAINTAINER Aurelio Jargas RUN apt-get update && apt-get install -y bc curl lynx From f6caf2c0103d08bb44727d7849c7c56ba0ba80ef Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Thu, 12 May 2016 14:01:28 -0300 Subject: [PATCH 03/12] =?UTF-8?q?Especifica=20a=20codifica=C3=A7=C3=A3o=20?= =?UTF-8?q?UTF-8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index c6cfdf2d8..79673c777 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,7 @@ RUN apt-get update && apt-get install -y bc curl lynx COPY . /app WORKDIR /app +ENV LC_ALL C.UTF-8 ENV PATH /app:$PATH ENV ZZPATH /app/funcoeszz ENV ZZDIR /app/zz From 6e0f6923d61b878e3ab11640d6aa4879a1d39ae3 Mon Sep 17 00:00:00 2001 From: itamarnet Date: Fri, 12 Aug 2016 21:59:17 -0300 Subject: [PATCH 04/12] =?UTF-8?q?Definindo=20persist=C3=AAncia=20para=20ar?= =?UTF-8?q?quivos=20de=20cache.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 3 +++ zz/zzlembrete.sh | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 79673c777..e5af662bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,9 +10,12 @@ ENV LC_ALL C.UTF-8 ENV PATH /app:$PATH ENV ZZPATH /app/funcoeszz ENV ZZDIR /app/zz +ENV ZZTMPDIR /tmp # Needed by functions --help (see core) ENV PAGER more +VOLUME /tmp + ENTRYPOINT ["bash", "funcoeszz"] CMD ["--help"] diff --git a/zz/zzlembrete.sh b/zz/zzlembrete.sh index 599484c14..bc292c492 100644 --- a/zz/zzlembrete.sh +++ b/zz/zzlembrete.sh @@ -16,7 +16,7 @@ zzlembrete () zzzz -h lembrete "$1" && return local numero tmp - local arquivo="$HOME/.zzlembrete" + local arquivo="${ZZTMPDIR:-$HOME}/.zzlembrete" # Assegura-se que o arquivo de lembretes existe test -f "$arquivo" || touch "$arquivo" From 5ca5fc8684c6c59757d4c7ed438749b9833451f8 Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Fri, 4 Nov 2016 21:04:17 -0200 Subject: [PATCH 05/12] Omite warnings no build com DEBIAN_FRONTEND=noninteractive --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e5af662bc..24e646959 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM debian:jessie MAINTAINER Aurelio Jargas -RUN apt-get update && apt-get install -y bc curl lynx +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y bc curl lynx COPY . /app WORKDIR /app From d7d2f8f7e3cbbb70a916a9efa4bca5c530a9c57a Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Fri, 4 Nov 2016 21:17:59 -0200 Subject: [PATCH 06/12] =?UTF-8?q?Adiciona=20instru=C3=A7=C3=B5es=20Docker?= =?UTF-8?q?=20ao=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d13843942..1549b73ea 100644 --- a/README.md +++ b/README.md @@ -49,11 +49,35 @@ Agora sim, você pode usar as Funções ZZ em toda a sua glória. Abra um novo t $ zzcalcula 10+5 15 - + $ zzbissexto 2016 2016 é bissexto - + $ zzmaiusculas tá funcionando TÁ FUNCIONANDO Quando quiser atualizar os arquivos para a versão mais recente, basta um `git pull`. + +## Execução via Docker + +A imagem oficial das Funções ZZ é a [funcoeszz/zz](https://hub.docker.com/r/funcoeszz/zz/). + +Primeiro, baixe-a para a sua máquina: + +``` +docker pull funcoeszz/zz +``` + +Agora basta rodar o contêiner e informar qual função você quer usar, junto com seus parâmetros: + +```console +$ docker run --rm funcoeszz/zz horariodeverao +16/10/2016 +19/02/2017 + +$ docker run --rm funcoeszz/zz senha 30 +pipj74x30fEbzbx0rcPEwukL2WKjCA + +$ docker run --rm funcoeszz/zz maiusculas tá funcionando +TÁ FUNCIONANDO +``` From 0d3cc92c5333f3f83a3b452a3fb3c2e188446604 Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Fri, 11 Nov 2016 19:28:11 -0200 Subject: [PATCH 07/12] Otimiza comandos no Dockerfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - A ordem importa, é melhor deixar o COPY por último, pois afeta o cache dos layers. - Apagando os artefatos do apt-get. - Agrupar todos os ENV num único comando reduz o número de layers. - Copiando somente as funções, nada mais (doc, testador, etc). --- Dockerfile | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index 24e646959..1cb6dc355 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,23 @@ FROM debian:jessie MAINTAINER Aurelio Jargas -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y bc curl lynx +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y bc curl lynx && \ + rm -rf /var/lib/apt/lists/* -COPY . /app -WORKDIR /app - -ENV LC_ALL C.UTF-8 -ENV PATH /app:$PATH -ENV ZZPATH /app/funcoeszz -ENV ZZDIR /app/zz -ENV ZZTMPDIR /tmp - -# Needed by functions --help (see core) -ENV PAGER more +ENV LC_ALL=C.UTF-8 \ + PATH=/app:$PATH \ + ZZPATH=/app/funcoeszz \ + ZZDIR=/app/zz \ + ZZTMPDIR=/tmp \ + PAGER=more +# User may want to preserve the functions cache VOLUME /tmp +COPY funcoeszz /app/ +COPY zz/ /app/zz/ +WORKDIR /app + ENTRYPOINT ["bash", "funcoeszz"] CMD ["--help"] From ec762aacdc1a261489b0e349cfe866b7ea2a1ecd Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Fri, 11 Nov 2016 19:48:22 -0200 Subject: [PATCH 08/12] Adiciona .dockerignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pra evitar passar a pasta .git para o contexto do build. Isso deixa o build mais rápido e evita que a pasta do Git seja copiada se fizer um `COPY . /app`. --- .dockerignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..6b8710a71 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.git From 8c2303f304686b689e88fa817b689ed36f1f2028 Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Fri, 11 Nov 2016 20:09:28 -0200 Subject: [PATCH 09/12] =?UTF-8?q?Adiciona=20a=20vari=C3=A1vel=20de=20ambie?= =?UTF-8?q?nte=20$TERM,=20pra=20arrumar=20o=20tput?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vide comentários no https://github.com/funcoeszz/funcoeszz/pull/290 --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1cb6dc355..2eda0378e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,11 +5,12 @@ RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y bc curl lynx && \ rm -rf /var/lib/apt/lists/* -ENV LC_ALL=C.UTF-8 \ - PATH=/app:$PATH \ +ENV PATH=/app:$PATH \ ZZPATH=/app/funcoeszz \ ZZDIR=/app/zz \ ZZTMPDIR=/tmp \ + LC_ALL=C.UTF-8 \ + TERM=xterm \ PAGER=more # User may want to preserve the functions cache From b0b859aa75081fc727b25b23c4f054f276527f8c Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Fri, 11 Nov 2016 20:37:12 -0200 Subject: [PATCH 10/12] Adiciona link para a wiki sobre o Docker --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1549b73ea..58fdc151e 100644 --- a/README.md +++ b/README.md @@ -81,3 +81,5 @@ pipj74x30fEbzbx0rcPEwukL2WKjCA $ docker run --rm funcoeszz/zz maiusculas tá funcionando TÁ FUNCIONANDO ``` + +**Desenvolvedor:** Para instruções sobre como construir esta imagem, ou como rodar outro tipo de comandos dentro do contêiner, [veja esta wiki](https://github.com/funcoeszz/funcoeszz/wiki/Docker) From 695077b2842a03cb7c633e280c1f54bb7d1b4b33 Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Wed, 16 Nov 2016 17:00:54 -0200 Subject: [PATCH 11/12] =?UTF-8?q?Adiciona=20links,=20necess=C3=A1rio=20em?= =?UTF-8?q?=20algumas=20fun=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit $ git grep zztool.*links zz/zzcinepolis.sh: zztool post links "${url}/ajax/ajax.conteudo_horarios.php" "cod_horario=${hoje}&cod_cinema=${codigo}&cod_claquete=${claquete}" | zz/zzloteria.sh: dump=$(zztool dump links "${url}/${tipo}" | sed -n '/Resultado Concurso/,/^ *Arrecada/p' | sed '2,6d;s/^Resultado //') --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2eda0378e..25aa15a9c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM debian:jessie MAINTAINER Aurelio Jargas RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y bc curl lynx && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y bc curl lynx links && \ rm -rf /var/lib/apt/lists/* ENV PATH=/app:$PATH \ From 05c958d48c22ce57328934680673a7f1380dde21 Mon Sep 17 00:00:00 2001 From: Aurelio Jargas Date: Wed, 16 Nov 2016 19:03:28 -0200 Subject: [PATCH 12/12] Usa dumb-init para capturar sinais (Ctrl-C) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Para poder dar um Ctrl-C durante a execução do contêiner, para interromper imediatamente a função. Sem isso, sinais como o Ctrl-C são ignorados. Fixes #374 --- Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 25aa15a9c..9d2e67f34 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,10 @@ RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y bc curl lynx links && \ rm -rf /var/lib/apt/lists/* +# Using dumb-init to catch user signals https://github.com/funcoeszz/funcoeszz/issues/374 +RUN curl -fsSL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 > /dumb-init && \ + chmod +x /dumb-init + ENV PATH=/app:$PATH \ ZZPATH=/app/funcoeszz \ ZZDIR=/app/zz \ @@ -20,5 +24,5 @@ COPY funcoeszz /app/ COPY zz/ /app/zz/ WORKDIR /app -ENTRYPOINT ["bash", "funcoeszz"] +ENTRYPOINT ["/dumb-init", "--", "bash", "funcoeszz"] CMD ["--help"]