Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL in Docker ist bei der Root-Passwort-Konfiguration eingefroren

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.