Het geaccepteerde antwoord kan in abstracte zin waar zijn, maar het is volledig irrelevant voor de zaak in kwestie. U hebt een manier nodig om het wachtwoord statisch op te geven. En tenzij u de officiële afbeelding gebruikt , je hebt dat nodig, of je nu wel of niet het dogma van "één proces, één container" volgt.
Het antwoord hier
vertelt hoe, maar het laat een sleutelinstelling weg:je moet nog steeds debconf
. vertellen om de Noninteractive
. te gebruiken front-end, zoals hier
beschreven .
Hier is een voorbeeld van een werkend Dockerfile
gebaseerd op het bovenstaande.
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
Dit is niet zo heel anders dan wat de officiële Dockerfile
doet -- hoewel ze de eigenlijke wachtwoordconfiguratie enigszins anders behandelen.
Sommige mensen hebben succes gehad door in te stellen de DEBIAN_FRONTEND
omgevingsvariabele naar noninteractive
, zoals zo:
ENV DEBIAN_FRONTEND noninteractive
Dat blijkt echter niet in alle gevallen te werken. debconf
gebruiken direct is voor mij betrouwbaarder gebleken.