Przyjęta odpowiedź może być prawdziwa w pewnym abstrakcyjnym sensie, ale jest całkowicie nieistotna w rozpatrywanej sprawie. Potrzebujesz sposobu na statyczne określenie hasła. I chyba że używasz oficjalnego obrazu , będziesz tego potrzebować bez względu na to, czy postępujesz zgodnie z dogmatem „jeden proces, jeden kontener”.
Odpowiedź tutaj
mówi jak, ale pomija kluczowe ustawienie:nadal musisz powiedzieć debconf
aby użyć Nieinteraktywny
front-end, jak opisano tutaj
.
Oto przykład działającego pliku Dockerfile
w oparciu o powyższe.
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
Nie różni się to zbytnio od tego, co oficjalne Dockerfile
tak - chociaż obsługują one rzeczywistą konfigurację hasła nieco inaczej.
Niektórym ludziom udało się ustawienie DEBIAN_FRONTEND
zmienna środowiskowa na nieinteraktywna
, jak tak:
ENV DEBIAN_FRONTEND noninteractive
Jednak wydaje się, że to nie działa we wszystkich przypadkach. Korzystanie z debconf
bezpośrednio okazał się dla mnie bardziej niezawodny.