limarka
limarka copied to clipboard
Criar imagem docker baseado no alpine
Comportamento esperado: criar imagem baseado no linux alpine. Atualmente o build é feito a partir do ruby:2-slim
.
Para servir de referência, fiz dessa maneira
FROM alpine:latest
# Acelerando a instalação ao pular a instalação da documentação
RUN mkdir -p /usr/local/etc \
&& { \
echo 'install: --no-document'; \
echo 'update: --no-document'; \
} >> /etc/gemrc
# instalando dependencias
RUN apk update
RUN apk --no-cache add \
build-base \
git \
ca-certificates \
ruby-dev \
ruby-bundler \
ruby-json \
libffi-dev \
openssl-dev \
fontconfig \
pdfgrep \
poppler-utils \
unzip \
perl \
wget \
xz \
tar \
fontconfig \
freetype \
lua \
python2
RUN wget -O pandoc.tar.gz https://github.com/jgm/pandoc/releases/download/2.9.2.1/pandoc-2.9.2.1-linux-amd64.tar.gz \
&& tar xvzf pandoc.tar.gz --strip-components 1 -C /usr/local/ && rm pandoc.tar.gz
# Instala tinytex (/root/.TinyTex)
ENV PATH=/root/.TinyTeX/bin/x86_64-linuxmusl:$PATH
RUN wget -qO- "https://yihui.name/gh/tinytex/tools/install-unx.sh" | sh
# instala bibliotecas para o abntex2/limarka
RUN tlmgr install \
abntex2 \
babel-portuges \
bookmark \
caption \
enumitem \
epstopdf-pkg \
lastpage \
lipsum \
listings \
memoir \
microtype \
pdflscape \
pdfpages \
psnfss \
shipunov \
texliveonfly \
textcase \
xcolor
# checagem de alguma depedências
RUN tlmgr --version
RUN pdflatex --version
RUN xelatex --version
RUN latexmk --version
RUN pandoc --version
RUN gem install limarka --pre
Eu consegui fazer a imagem assim:
FROM alpine:3.7
LABEL maintainer="[email protected]"
# Tentamos seguir as melhores práticas:
# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
RUN apk update \
&& apk upgrade \
&& apk add --no-cache --update \
alpine-sdk \
build-base \
fontconfig \
pdfgrep \
perl \
poppler-utils \
ruby-dev \
ruby \
unzip \
wget
# Instala tinytex (/root/.TinyTex)
RUN wget -qO- "https://yihui.name/gh/tinytex/tools/install-unx.sh" | sh
ENV PATH="/root/bin:${PATH}"
# instala bibliotecas para o abntex2/limarka
RUN tlmgr install \
abntex2 \
babel-portuges \
bookmark \
enumitem \
epstopdf-pkg \
iftex \
lastpage \
lipsum \
listings \
caption \
memoir \
microtype \
pdflscape \
pdfpages \
textcase \
xcolor
# Configurando o idioma português
ENV MUSL_LOCALE_DEPS cmake make musl-dev gcc gettext-dev libintl
ENV MUSL_LOCPATH /usr/share/i18n/locales/musl
RUN apk add --no-cache \
$MUSL_LOCALE_DEPS \
&& wget https://gitlab.com/rilian-la-te/musl-locales/-/archive/master/musl-locales-master.zip \
&& unzip musl-locales-master.zip \
&& cd musl-locales-master \
&& cmake -DLOCALE_PROFILE=OFF -D CMAKE_INSTALL_PREFIX:PATH=/usr . && make && make install \
&& cd .. && rm -r musl-locales-master
ENV LANG pt_BR.UTF8
# Instalação do pandoc
RUN wget -O pandoc.tar.gz https://github.com/jgm/pandoc/releases/download/2.9.2.1/pandoc-2.9.2.1-linux-amd64.tar.gz \
&& tar xvzf pandoc.tar.gz --strip-components 1 -C /usr/local/ && rm pandoc.tar.gz
RUN gem install limarka; exit 0
RUN apk del ruby-dev build-base wget alpine-sdk unzip cmake make musl-dev gcc
VOLUME ["/trabalho"]
WORKDIR /trabalho
CMD ["--help"]
ENTRYPOINT ["/usr/local/bundle/bin/limarka"]
Ia mandar uma branch mas tô sem permissão de escrita no repositório e não queria fazer um PR direto pra a master.
@sergiopvilar não precisa fazer branch, é direto na master
mesmo.
Antigamente eu fazia com branches mas era muito trabalhoso, depois eu reformulei o projeto adotando estratégias mais ágeis.
Se preferir, pode ler as instruções para desenvolvedores
Eu recomendo manter um arquivo Dockerfile separado para o alphine, pois lembro que ele nem usa o apt-get.
@edusantana isso, ele usa o apk
no lugar, porque tu acha melhor serem imagens separadas?
Precisamos homologar as duas imagens e depois escolher qual será utilizada, por isso pedi que fossem dois arquivos diferentes, para poder testar separadamente.
Não acho legal dois arquivos, com naturezas diferentes, manterem o mesmo caminho no controle de versão.
Então vou criar alphine-ruby-latex-pandoc.dockerfile
com o conteúdo que você colocou aí.
RUN apk del ruby-dev build-base wget alpine-sdk unzip cmake make musl-dev gcc
@sergiopvilar Eu fiquei na dúvida também... apagar ou não apagar as dependências de desenvolvimento. Eu tinha optado por deixar, caso o usuário fosse adicionar algo mais... mas acho que é melhor apagar mesmo.