Die akzeptierte Antwort mag in gewissem abstrakten Sinne wahr sein, aber sie ist für die vorliegende Angelegenheit völlig irrelevant. Sie benötigen eine Möglichkeit, das Kennwort statisch anzugeben. Und es sei denn, Sie verwenden das offizielle Image , das brauchen Sie unabhängig davon, ob Sie dem Dogma "Ein Prozess, ein Container" folgen oder nicht.
Die Antwort hier
sagt, wie, aber es lässt eine wichtige Einstellung aus:Sie müssen immer noch debconf
mitteilen um den Noninteractive
zu verwenden Frontend, wie hier
beschrieben .
Hier ist ein Beispiel für ein funktionierendes Dockerfile
basierend auf dem oben Gesagten.
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
Dies unterscheidet sich nicht allzu sehr von der offiziellen Dockerfile
tut -- obwohl sie die eigentliche Passwortkonfiguration etwas anders handhaben.
Einige Leute hatten Erfolg, indem sie DEBIAN_FRONTEND
gesetzt haben Umgebungsvariable auf noninteractive
, etwa so:
ENV DEBIAN_FRONTEND noninteractive
Das scheint aber nicht in allen Fällen zu funktionieren. Verwendung von debconf
direkt hat sich für mich als zuverlässiger erwiesen.