Sto provando a configurare un contenitore SonarQube supportato da un contenitore di database MySQL. mia finestra mobile-compose.yml:docker-compose - Esporre la porta di servizio collegata
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
Nella sezione ports
sto cercando di esporre sia porta 9000 da SonarQube (interfaccia web) e la porta 3306 (connessione MySQL).
Esiste un modo per esporre una porta da un servizio collegato (come ad esempio db
in questo caso) dal contenitore "principale", ad es. sonar
?
MODIFICA: solo per spiegare meglio le mie esigenze, voglio esporre entrambe le porte al mio localhost
. Ho bisogno di accedere a entrambe le porte dalla mia macchina, poiché il runner SonarQube ha bisogno di accedere al database e voglio eseguire alcune query anche nel database, dalla mia macchina, non all'interno di un altro contenitore.
ho capito adesso. Ma perché non semplicemente mappare l'host 'db'' EXPOSE' sull'host come hai fatto per Sonar? Sonar userà la porta 'db'' EXPOSE' direttamente, ma la tua query da localhost userà il valore della porta che avrai specificato nella sezione 'db/ports' (vedi la mia risposta modificata sotto) – VonC