-1

下面是示例代码:

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]还是?

上面的示例代码究竟对端口做了什么?

4

1 回答 1

3

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

当您发布端口时,您是在该容器的 localhost 机器或主机上进行的。

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

约定是:主机端口:容器端口

于 2019-12-04T19:15:01.403 回答