Det accepterade svaret kan vara sant i någon abstrakt mening, men det är helt irrelevant för den aktuella frågan. Du behöver ett sätt att ange lösenordet statiskt. Och såvida du inte använder den officiella bilden , du behöver det oavsett om du följer "en process, en behållare" dogmen eller inte.
Svaret här
berättar hur, men det utelämnar en nyckelinställning:du måste fortfarande berätta för debconf
för att använda den Icke-interaktiva
front-end, som beskrivs här
.
Här är ett exempel på en fungerande Dockerfile
baserat på ovanstående.
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
Detta skiljer sig inte så mycket från vad official
Vissa personer har haft framgång genom att ställa in DEBIAN_FRONTEND
miljövariabel till icke-interaktiv
, som så:
ENV DEBIAN_FRONTEND noninteractive
Det verkar dock inte fungera i alla fall. Använder debconf
direkt har visat sig vara mer tillförlitlig för mig.