2017-07-04 5 views
0

Ich habe eine docker-compose.yaml-Datei und dann dockerfiles. Nun, ich möchte nicht den ganzen Host, Port, Passwort in diesem docker-compose/dockerfile schreiben. Stattdessen möchte ich alle diese Konfigurationen in einer anderen Datei behalten. Ich weiß, die Hälfte der Anforderung könnte durch Verwendung der .env-Datei erreicht werden, wo ich meine Umgebungsvariablen behalten kann, aber dann ist es gut, alle Konfigurationen in einer einzigen Datei (main.cfg) zu behalten, die von anderen Komponenten verwendet werden könnte .So importieren Sie Konfigurationen in Dockerfile.

+0

Wenn Sie wirklich wollen, dass eine Konfigurationsdatei auf dem Host zur Laufzeit von den Docker-Containern gelesen werden soll, können Sie ein Volume erstellen, das diese Datei enthält – Joel

+0

@Joel: Danke Joel. Aber dann, wie man es von dieser Konfigurationsdatei liest? Als Umgebungsvariablen? – user208859

Antwort

0

Sie können Volumes verwenden, um eine Datei oder einen gesamten Ordner für einen Andockdienst freizugeben. Hier ist ein Beispiel von einer MySQL, die eine Datenbank teilt Andockfenster:

version: '3' 
services: 
    mysql-database: 
    image: mysql 
    container_name: mysql-database 
    volumes: 
     - ./mysql/docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d 
    env_file: 
     - .env 
    ports: 
     - 3306:3306 

Die Verzeichnisstruktur ist wie folgt:

BaseDirectory 
|____docker-compose.yml 
| mysql 
| |____docker-entrypoint-initdb.d 
|   |____sqldb1.gz 
|   |____sqldb2.gz 

In obigem Beispiel alle Dateien innerhalb docker-entrypoint-initdb.d vom Host, an den gemeinsamen Docker Container, und kann von innerhalb des Containers auch auf /docker-entrypoint-initdb.d zugegriffen werden. Sie können einzelne Dateien auch mit einem genauen Dateinamen mounten. Zum Beispiel:

volumes: 
    - ./mysql/docker-entrypoint-initdb.d/sqldb1.gz:/docker-entrypoint-initdb.d/sqldb1.gz 

Als ich eine Datenbank geteilt haben, in ähnlicher Weise können Sie eine Konfigurationsdatei teilen und legen Sie es auf den genauen Ort, den Sie in der Docker wollen.

Verwandte Themen