La risposta accettata può essere vera in un certo senso astratto, ma è del tutto irrilevante per la questione in questione. È necessario un modo per specificare la password in modo statico. E a meno che tu non stia utilizzando l'immagine ufficiale , ti servirà indipendentemente dal fatto che tu segua o meno il dogma "un processo, un contenitore".
La risposta qui
spiega come, ma tralascia un'impostazione chiave:devi ancora dire a debconf
per utilizzare il Noninteractive
front-end, come descritto qui
.
Ecco un esempio di un Dockerfile
funzionante in base a quanto sopra.
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
Non è molto diverso da ciò che ufficiale Dockerfile
fa -- anche se gestiscono la configurazione della password effettiva in modo leggermente diverso.
Alcune persone hanno avuto successo impostando il DEBIAN_FRONTEND
variabile di ambiente su noninteractive
, in questo modo:
ENV DEBIAN_FRONTEND noninteractive
Tuttavia, ciò non sembra funzionare in tutti i casi. Usando debconf
direttamente si è dimostrato più affidabile per me.