Ich benutze docker-compose, um einen kompletten Entwicklungsstack zu erstellen.Wie werden IP-Adressen behandelt, wenn Docker-Container mithilfe von docker-compose miteinander verknüpft werden?
Die Anwendung benötigt einen MySQL-Server, um zu funktionieren.
Der MySQL-Server ist ein externer Container-Setup von Docker-compose:
mysql:
image: mysql:5.6
volumes:
- /data/mysql:/var/lib/mysql
- ./docker/mysql.d:/etc/mysql/conf.d
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
Die Anwendung verfügt über eine eigene Docker-compose.yml und verweist auf den mysql Container:
my-application:
build: . # the Dockerfile resides in the current folder
ports:
- "9180:80"
- "9543:443"
external_links:
- mysql_mysql_1:mysql
environment:
DOCKER_ENVIRONMENT: dev
DB_NAME: local_db
DB_PASS: password
DB_USER: root
DB_HOST: # how to set the mysql's IP address?
Ich kann nicht passieren sie im Docker-komponieren, da es dynamisch ist.
Ich weiß, dass die Anwendung sich der MySQL-IP-Adresse ist, wie ich bestimmte Variablen gesetzt:
application-container$ env|grep ADDR
MYSQL_PORT_3306_TCP_ADDR=172.17.0.241
Doch dies ist mein nicht DB_HOST
erforderlich.
Kann ich die Variable irgendwie auf DB_HOST
abbilden oder anders einstellen?
Warum ist Ihr MySQL-Server in einer externen docker-composer.yml-Datei? Ist das wirklich erforderlich? Normalerweise, wenn Sie Container-Anwendungen haben, die zusammen ausgeführt werden müssen, müssen Sie die in nur einem Docker-Composer.yml konfigurieren. – nessuno
@nessuno Ich möchte diesen mysql Container für mehrere Projekte verwenden. Ich brauche nicht 12 mysql Server herumfliegen.Außerdem ordne ich die mysql-Daten auf meine große Festplatte unter '/ data/mysql' ab, da die MySQL-Datenbank ziemlich massiv werden kann. Wenn Sie mehrere mysql-Instanzen haben, die demselben Ordner zugeordnet sind, führt dies zu Dateisystemsperrproblemen. – k0pernikus
Sie können die mysql-Container-Konfiguration mit Ihrer Anwendung zusammenstellen, Sie müssen nur docker-compose mit dem '--no-recreate'-Flag ausführen, denke ich. Danach haben Sie nur einen MySQL Container hoch, und Sie können diesen Container direkt mit seinem Namen in der Datei docker-compose.yml referenzieren. Also make 'DB_HOST: mysql'. – nessuno