我正在尝试设置一个由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
在端口部分,我试图从SonarQube(Web界面)和端口3306(MysqL连接)公开端口9000.
有没有办法从“主”容器中显示来自链接服务(例如本例中的db)的端口,例如声纳?
编辑:为了更好地解释我的需求,我想将两个端口暴露给我的localhost.我需要从我的机器访问这两个端口,因为我的SonarQube运行器需要访问数据库,我也想在数据库中运行一些查询,从我的机器,而不是在另一个容器内.
最佳答案
您不需要:来自一个服务的
EXPOSE
端口可以从另一个服务直接看到(链接到第一个).
无需端口映射(如SonarQube和3306中的9000)
从主机访问容器需要端口映射.
但是从容器到a (linked) container(都由同一个docker守护程序管理),可以直接访问EXPOSE
in its Dockerfile
中声明的任何端口.
I want to expose both ports to my localhost. I need access to both ports from my machine,as I SonarQube runner needs access to the database
那么,… db部分应该有自己的端口映射部分:
db:
ports:
- "xxx:yyyy"