docker-compose – 公开链接的服务端口
我试图设置一个由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
部分,我试图公开端口9000从SonarQube(networking接口)和端口3306(MySQL连接)。
有什么办法从“主”容器,例如sonar
从链接的服务(如在这种情况下的db
)暴露端口?
编辑:只是为了更好地解释我的需求,我想公开两个端口到我的localhost
。 我需要从我的机器访问这两个端口,因为我SonarQube亚军需要访问数据库,我也想在我的机器,而不是在另一个容器内运行一些查询在数据库中 。
您不需要:从一个服务的EXPOSE
端口可以从另一个服务直接看到(链接到第一个)。
没有必要的端口映射(就像SonarQube和3306中的9000一样)
端口映射对于从主机访问容器是必需的。
但是从容器到一个(链接的)容器 (都由同一个EXPOSE
守护进程pipe理),任何在EXPOSE
中Dockerfile
声明的端口Dockerfile
可以直接访问。
我想公开两个端口到我的本地主机。 我需要从我的机器访问这两个端口,因为我SonarQube亚军需要访问数据库
那么,… db
部分应该有自己的端口映射部分:
db: ports: - "xxx:yyyy"