La réponse acceptée peut être vraie dans un certain sens abstrait, mais elle n'a aucun rapport avec le sujet en question. Vous avez besoin d'un moyen de spécifier le mot de passe de manière statique. Et à moins que vous n'utilisiez l'image officielle , vous en aurez besoin, que vous suiviez ou non le dogme "un processus, un conteneur".
La réponse ici
indique comment, mais il laisse de côté un paramètre clé :vous devez toujours indiquer debconf
pour utiliser le Noninteractive
front-end, comme décrit ici
.
Voici un exemple de travail Dockerfile
basé sur ce qui précède.
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
Ce n'est pas trop différent de ce que le officiel Dockerfile
fait - bien qu'ils gèrent la configuration réelle du mot de passe quelque peu différemment.
Certaines personnes ont réussi en définissant le DEBIAN_FRONTEND
variable d'environnement à noninteractive
, comme ceci :
ENV DEBIAN_FRONTEND noninteractive
Cependant, cela ne semble pas fonctionner dans tous les cas. Utiliser debconf
directement s'est avéré plus fiable pour moi.