Рубрики
Uncategorized

Mantendo O EntryPoint E O CMD Originais de Uma Image Docker Gerada Através Do Packer

Представьте себе o Seguinte Cenário: Existe UMA ImageM Docker que Faz Quase-Tudo Que Precisa, Mas Falta … Теги с DevOps, Sre, Docker, Packer.

Представьте себе o Seguinte Cenário: Existe UMA ImageM Docker Que Faz Quase-Tudo Que Precisa, Mas Falta Alguma CoiSinha, UM PACOTE, UM Arquivinho, UM перенаправить Отказ Логотип, o que vovê faz? Cria Um Dockerfile Utiliza Aquela Image Como база Em От Executa Meia Dúzia de ЗАПУСТИТЬ , Скопировать , E Cria UMA ImageM NOVA, ADICIONA UMA Тег E Pronto. Проблема Resolvido, Certo?

UMA OUTRA Positibilidade é Utilizar o Упаковщик Para Gerar Image. ELE, Diferente Do Docker, Não Utilizará rrquivo Dockerfile , Mas Gerará ava nova imagemanando um Контейнер , Fazendo As Coisas Que Tem Que Fazer Lá Dentro E QuAndo Tudo Ediver Pronto, ElemuTará um совершать Криандо Ассизм Ума Нова Image.

SE VOCê OPTOU PELO SEGUNDO MÉTODO, ПОСТУДУЮ TER SE FRUTUTRADO NO MOMBER DE EXPUTAR UM Контейнер Baseado Na Segunda Image. UM Serviço Não Subiu, O Контейнер Não Fez o Que Ele Deveria Ter Feito, E VOCê Ficou Com Uma Cara de «Ué».

O motivo disso é re que, отличающаяся dum um Dockerfile o packer não faz com que a nova image herde o Выходная точка E o CMD Da Image Mange. Para Contornar Esse Comportamento Do Packer Escreva O Seu Arquivo de Шаблон Da Seguinte Forma:

source "docker" "my-jenkins" {
    image = "jenkins/jenkins:lts-jdk11"
    commit = true
    run_command = ["-d", "-i", "-t", "--", "{{.Image}}"]
    changes = [
        "ENTRYPOINT /sbin/tini -- /usr/local/bin/jenkins.sh",
        "CMD bash"
    ]
    exec_user = "root"
}

build {
    sources = [
        "source.docker.my-jenkins"
    ]
    provisioner "shell" {
        inline = [
            "apt update",
            "apt install -y htop"
        ]
    }
    post-processor "docker-tag" {
        repository = "my-jenkins"
    }
}

Neste Exemplo, Nós Estamos Criando Uma Nova Image Do Jenkins Com O Picote HTOP Utilizando A Image Base Do Mesmo. Para Isso, Fizemos o Seguinte:

  • Run_command : Opções Utilizados Pelo Packer Ao Esiblicizar O Контейнер Que Gerará Image. POR PADRãO, HA UMA OPČãO --entryPoint =/bin/штерива que nós estamos Removendo;

  • изменения : ESTA E A Tare Mais Geate. Precisamos Restaurar O EntryPoint E O CMD Originais Da Image, E Para Isso, Vá Até A Página Da Mesma Нет Docker Hub E Verifique-Os Consultando O Dockerfile да месма;

  • exec_user : o Usuário Utilizado (UID) Para Executar O Продавщик Da Imagem. Им Продавщик é части делаю Шаблон Отзывы PELA Instalação Dos Palocotes, Arquivos и т. Д. COMO ESTAMOS Instalando UM NOVO PACOTE ATRAVÉS DO APT , Precisamos Que Esse Comando Seja Executado Como Root;

AO Final, Estamos Colocando A Тег My-Jenkins Na Image Por Meio do Пост-процессор Docker-Tag .

Вывод

Embora Muitas Pessoas Ainda Utilizem Dockerfiles Para A A Conderução de Suass Images — E Não Há Nada de Errado Nisso — O Packer É UMA Opção Interestante E que Poore Nos Auxiliar A Fazer O Mesmo. O IntuTo Deste Artigo Não é é o adresentar como tal, mas sim visolver UM Проблема Comum Que Provivelmente Afetará As Pessoas Que Escolheram Tal Caminho.

Оригинал: «https://dev.to/stefanomartins/mantendo-o-entrypoint-e-o-cmd-originais-de-uma-imagem-docker-gerada-atraves-do-packer-422n»