Ich versuche, einen SonarQube-Container einzurichten, der von einem MySQL-Datenbankcontainer unterstützt wird. Meine Docker-compose.yml:docker-compose - Expose verknüpfter Service-Port
sonar:
environment:
- SONARQUBE_USER=sonar
- SONARQUBE_PASSWORD=sonar
- SONARQUBE_DATABASE=sonar
- SONARQUBE_JDBC_URL=jdbc:mysql://db:3306/sonar?useUnicode=true&characterEncoding=utf8
build: .
ports:
- "19000:9000"
- "19306:3306"
links:
- db
db:
environment:
- MYSQL_ROOT_PASSWORD=root-secret
- MYSQL_USER=sonar
- MYSQL_PASSWORD=sonar
- MYSQL_DATABASE=sonar
image: mysql
Im ports
Abschnitt Ich versuche, sowohl Port zu belichten 9000 von Sonarqube (Web-Interface) und Port 3306 (MySQL-Verbindung).
Gibt es eine Möglichkeit, einen Anschluss von einem verbundenen Dienst (wie db
in diesem Fall) aus dem "Haupt" Container, z. sonar
?
EDIT: Nur um meine Bedürfnisse besser zu erklären, möchte ich beide Ports zu meinem localhost
offen legen. Ich brauche Zugriff auf beide Ports von meinem Rechner aus, da ich SonarQube Runner Zugriff auf die Datenbank benötige und auch einige Abfragen in der Datenbank ausführen möchte, von meinem Rechner, nicht in einem anderen Container.
Ich verstehe jetzt. Aber warum nicht einfach den 'db'' EXPOSE''d Port auf den Host mappen, wie Sie es für Sonar getan haben? Sonar wird immer noch den 'EXPOSE'' db'-Port verwenden, aber Ihre Abfrage von localhost wird den Port-Wert verwenden, den Sie im 'db/ports'-Bereich angegeben haben (siehe meine bearbeitete Antwort unten) – VonC