Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Criar imagem docker baseado no alpine #190

Open
edusantana opened this issue Jun 19, 2019 · 7 comments
Open

Criar imagem docker baseado no alpine #190

edusantana opened this issue Jun 19, 2019 · 7 comments

Comments

@edusantana
Copy link
Member

edusantana commented Jun 19, 2019

Comportamento esperado: criar imagem baseado no linux alpine. Atualmente o build é feito a partir do ruby:2-slim.

@cauachagas
Copy link
Collaborator

cauachagas commented Jun 15, 2020

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

@sergiopvilar
Copy link
Collaborator

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.

@edusantana
Copy link
Member Author

@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

@edusantana
Copy link
Member Author

edusantana commented Jun 16, 2020

Eu recomendo manter um arquivo Dockerfile separado para o alphine, pois lembro que ele nem usa o apt-get.

@sergiopvilar
Copy link
Collaborator

@edusantana isso, ele usa o apk no lugar, porque tu acha melhor serem imagens separadas?

@edusantana
Copy link
Member Author

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í.

edusantana added a commit that referenced this issue Jun 17, 2020
@edusantana
Copy link
Member Author

edusantana commented Jun 17, 2020

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants