La respuesta aceptada puede ser cierta en algún sentido abstracto, pero es completamente irrelevante para el asunto en cuestión. Necesita una forma de especificar la contraseña de forma estática. Y a menos que esté utilizando la imagen oficial , lo necesitará independientemente de que siga o no el dogma de "un proceso, un contenedor".
La respuesta aquí
dice cómo, pero omite una configuración clave:todavía tiene que decirle a debconf
para usar el Noninteractive
front-end, como se describe aquí
.
Aquí hay un ejemplo de un Dockerfile
en funcionamiento basado en lo anterior.
FROM ubuntu:latest
MAINTAINER Jonathan Strange <[email protected]>
RUN apt-get update \
&& apt-get install -y apt-utils \
&& { \
echo debconf debconf/frontend select Noninteractive; \
echo mysql-community-server mysql-community-server/data-dir \
select ''; \
echo mysql-community-server mysql-community-server/root-pass \
password 'JohnUskglass'; \
echo mysql-community-server mysql-community-server/re-root-pass \
password 'JohnUskglass'; \
echo mysql-community-server mysql-community-server/remove-test-db \
select true; \
} | debconf-set-selections \
&& apt-get install -y mysql-server apache2 python python-django \
python-celery rabbitmq-server git
Esto no es demasiado diferente de lo que oficial Dockerfile
lo hace, aunque manejan la configuración de la contraseña real de manera algo diferente.
Algunas personas han tenido éxito al configurar DEBIAN_FRONTEND
variable de entorno a noninteractive
, así:
ENV DEBIAN_FRONTEND noninteractive
Sin embargo, eso no parece funcionar en todos los casos. Usando debconf
directamente ha demostrado ser más confiable para mí.