docker-compose - 公开链接服务端口

时间:2015-12-17 12:15:58

标签: docker dockerfile 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部分,我试图从SonarQube(网络界面)和端口3306(MySQL连接)公开端口9000.

有没有办法在" main"中显示来自链接服务的端口(在本例中为db)。容器例如sonar

编辑:为了更好地解释我的需求,我想将这两个端口暴露给我的localhost。我需要从我的机器访问这两个端口,因为我的SonarQube运行器需要访问数据库,我也想在数据库中运行一些查询,从我的机器,而不是在另一个容器

1 个答案:

答案 0 :(得分:6)

您不需要:来自一个服务的EXPOSE端口可以从另一个服务直接看到(链接到第一个服务)。

无需进行端口映射(正如您对SonarQube和3306的9000所做的那样)
从主机访问容器需要端口映射 但是从容器到a (linked) container(都由同一个docker守护程序管理),EXPOSE in its Dockerfile中声明的任何端口都可以直接访问。

  

我想将这两个端口暴露给我的localhost。我需要从我的机器访问这两个端口,因为我的SonarQube运行器需要访问数据库

那么,...... db部分应该有自己的端口映射部分:

db:
  ports:
    - "xxx:yyyy"
相关问题