我正在尝试设置一个由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运行器需要访问数据库,我也想在数据库中运行一些查询,从我的机器,而不是在另一个容器内.
您不需要:EXPOSE
来自一个服务的端口可以从另一个服务直接看到(链接到第一个服务).
无需端口映射(与SonarQube和3306中的9000一样)
端口映射是从主机访问容器所必需的.
但是,从容器到一个(链接)容器(由同一个码头工人守护进程都管理),任何端口宣布EXPOSE
它Dockerfile
是直接访问.
我想将这两个端口暴露给我的localhost.我需要从我的机器访问这两个端口,因为我的SonarQube运行器需要访问数据库
那么,...该db
部分应该有自己的端口映射部分:
db: ports: - "xxx:yyyy"