2015-12-17 9 views
7

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.

+0

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

risposta

6

Non è necessario: una porta EXPOSE da un servizio è direttamente visibile da un'altra (collegamento al primo).

Nessuna mappatura delle porte necessaria (come per 9000 da SonarQube e 3306)
La mappatura delle porte è necessaria per accedere a un contenitore dall'host.
Ma dal contenitore a (entrambi gestiti dallo stesso daemon docker), qualsiasi porta dichiarata in EXPOSE in its Dockerfile è direttamente accessibile.

Voglio esporre entrambe le porte sul mio localhost. Ho bisogno di accedere a entrambe le porte dalla mia macchina, come ho SonarQube corridore ha bisogno di accedere al database

Ebbene, ... la sezione db dovrebbe avere una propria sezione mappatura delle porte:

db: 
    ports: 
    - "xxx:yyyy" 
+0

Per qualche motivo ho provato quello e io non ho funzionato. Immagino che il resto della mia configurazione fosse del tutto sbagliato, ma ora funziona come un incantesimo. Tks – resilva87

+0

È vero quando la finestra mobile è in esecuzione in un virtualenv? Non riesco a farlo funzionare –

Problemi correlati