Não é possível usar o apk, mas construir os programas a partir da fonte permite definir a versão específica. Confira as imagens oficiais do nodejs para exemplos. Eles constroem a partir da fonte para manter versões específicas de nodejs
É possível especificar a versão ao instalar o apk no alpine por exemplo apk add ffmpeg=3.0.7-r0
. Em contêineres, é um cenário típico, porque você quer algo imutável, então adicione o arquivo do Docker:
RUN apk add --no-cache ffmpeg=3.0.4-r1
o problema é que algum tempo depois você pode (irá) receber o erro algo assim:
ERROR: unsatisfiable constraints:
ffmpeg-3-0.7.0-r0:
breaks: world[ffmpeg=3.0.4-r1]
Portanto, é necessário alterar a versão e reinstalar o pacote. Eu li que não é seguro para definir restrições de versão, como a versão pode ser removida do repo, o conselho para não especificar a versão e "deixe apk manuseá-lo" - para mim isso é realmente estranho, talvez eu não consegui algumas coisas . Se para remover a versão, bem você não é realmente imutável e coisa que pode ser diferente em máquinas diferentes, eventualmente, obter erros de.
Qual é a estratégia para obter uma versão imutável do container com tais pacotes instalados?
Não é possível usar o apk, mas construir os programas a partir da fonte permite definir a versão específica. Confira as imagens oficiais do nodejs para exemplos. Eles constroem a partir da fonte para manter versões específicas de nodejs
Tags docker linux alpine-linux