Quiero instalar certbot en un entorno docker con una imagen de Ubuntu 16.04:
Por ejemplo:
docker run -it ubuntu:16.04 /bin/bash
Cuando estoy dentro del contenedor, la forma más sencilla de instalar certbot no funciona, ya que requiere la intervención del usuario:
apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot
El problema es tzdata
que se detiene con este diálogo interactivo:
Extracting templates from packages: 100%
Preconfiguring packages ...
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
1. Africa 4. Australia 7. Atlantic 10. Pacific 13. Etc
2. America 5. Arctic 8. Europe 11. SystemV
3. Antarctica 6. Asia 9. Indian 12. US
Geographic area:
Curiosamente, funciona cuando instalo tzdata
antes de agregar el ppa:
apt-get update && \
apt-get install -y tzdata && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot
Preguntas:
- ¿Por qué hace la diferencia si instalo
tzdata
antes o después de agregar el ppa? - ¿Existe un mejor enfoque para evitar el diálogo interactivo al instalar certbot?
16.04
ppa
automation
docker
letsencrypt
Philipp Claßen
fuente
fuente
Respuestas:
Para ejecutar
dpkg
(detrás de otras herramientas como Apt) sin diálogo interactivo, puede establecer una variable de entorno comoPor ejemplo, puede configurarlo en Dockerfile usando ARG :
fuente
sudo
no pasa las variables de entorno en la mayoría de los casos, por lo quesudo DEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
funciona peroDEBIAN_FRONTEND=noninteractive sudo apt-get install -y tzdata
no lo hace.En Ubuntu 18.04 hice ese Dockerfile:
fuente
TL&DR: dentro de su DockerFile
Razón:
Ciertos instaladores facilitan las 'instalaciones' al tener un buen front-end. Si bien esto es excelente cuando tiene una instalación manual, esto se convierte en un problema durante las instalaciones automatizadas.
Puede anular la instalación interactiva colocando lo siguiente en la cadena de su entorno.
Salud
fuente
Puede configurar
DEBIAN_FRONTEND=noninteractive
antes de que su comando eviteENV DEBIAN_FRONTEND=noninteractive
afectar los comandos posteriores o la imagen secundaria:fuente