docker-compose:EXPOSE是否在主机端口或容器端口上起作用?

时间:2019-12-04 19:02:23

标签: docker

下面是示例代码:

services:
  db:
    image: "mysql:8"
    restart: always
    environment:
      MYSQL_DATABASE: 'test'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: 'test'
      MYSQL_ROOT_PASSWORD: 'test'
    ports:
      - "3309:3306"
    expose:
      - "3309"

根据定义,在docker-compose文件中,expose:在主机端口或容器端口上是否起作用?

ports:是否遵循[host_port]:[container_port]约定或[container_port]:[host_port]

上面的示例代码到底对端口做了什么?

1 个答案:

答案 0 :(得分:1)

EXPOSE仅用于文档目的,而不是实际发布任何端口。可以将其视为元数据,从而允许其他开发人员或管理员在映像上拥有某种文档。

发布端口时,是在该容器的本地主机或主机上进行的。

例如,如果您在主机上运行redis容器并发布6379,则localhost:6379将映射到容器的6379端口。

约定是:host-port:container-port