Я пытаюсь настроить контейнер SonarQube, поддерживаемый контейнером базы данных MySQL. Мой докер-compose.yml:
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
В разделе ports
я пытаюсь открыть как порт 9000 из SonarQube (веб-интерфейс), так и порт 3306 (соединение MySQL).
Есть ли способ открыть порт из связанной службы (например, db
в этом случае) из «основного» контейнера, например. sonar
?
РЕДАКТИРОВАТЬ: Просто чтобы лучше объяснить мои потребности, я хочу открыть оба порта для моего localhost
. Мне нужен доступ к обоим портам с моего компьютера, так как для запуска SonarQube требуется доступ к базе данных, и я также хочу выполнять некоторые запросы в базе данных, со своего компьютера, а не внутри другого контейнера.
db
EXPOSE
с хостом, как вы сделали для Sonar? Sonar по-прежнему будет использовать портEXPOSE
db
напрямую, но ваш запрос от localhost будет использовать значение порта, которое вы указали в разделеdb/ports
(см. мой отредактированный ответ ниже) - person VonC   schedule 17.12.2015