【发布时间】:2015-12-17 12:15:58
【问题描述】:
我正在尝试设置一个由 MySQL 数据库容器支持的 SonarQube 容器。 我的 docker-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 部分,我尝试从 SonarQube(Web 界面)和端口 3306(MySQL 连接)公开端口 9000。
有没有办法从“主”容器中公开链接服务(例如db)的端口,例如sonar?
编辑:为了更好地解释我的需求,我想将两个端口都公开给我的localhost。我需要从我的机器访问这两个端口,因为我的 SonarQube 运行器需要访问数据库并且我也想在数据库中运行一些查询,从我的机器,而不是在另一个容器中。
【问题讨论】:
-
我现在明白了。但是,为什么不像对 Sonar 所做的那样简单地将
dbEXPOSE'd 端口映射到主机呢? Sonar 仍将直接使用EXPOSEdb端口,但您从 localhost 的查询将使用您在db/ports部分中指定的端口值(请参阅下面我编辑的答案)
标签: docker dockerfile docker-compose