如何自动获取可用端口?

ike*_*nas 1 docker docker-compose

我正在为一些项目使用 docker 容器,为了节省时间,我为其他项目克隆了 docker 作曲家文件。

我遇到的问题是 mysql_database 和 apache_service 的端口是固定值。

例子:

version: "3.2"

services:
  apache_service:
    build:
      context: './docker/apache/'
    links:
      - mysql_service:mysql_service
    depends_on:
      - mysql_service
    ports:
      - "8080:80" # "random_port:80"
    volumes:
      - ./:/var/www/

  mysql_service:
    build:
      context    : ./
      dockerfile : ./docker/mysql/Dockerfile
    command: [
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci',
      '--default-authentication-plugin=mysql_native_password',
    ]
    restart:
      always
    volumes:
      - ./docker/initdb:/docker-entrypoint-initdb.d
      - ./docker/mysql/logs:/var/log/mysql
    ports:
      - "4306:3306" # "random_port:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
    container_name:
      mysql_service

Run Code Online (Sandbox Code Playgroud)

当我复制 docker-composer 文件并写入时,docker-composer up我总是必须先更改端口......

我如何自动获取此服务的可用端口?

Efr*_*isi 5

用作0主机端口:这样您将从操作系统获得第一个可用(随机)端口;要稍后获取实际使用的端口,您可以使用该docker port <container>命令。

  • 省略主机端口并仅指定“ports: ['80']”将具有相同的效果。有一个 [`docker-compose port`](https://docs.docker.com/compose/reference/port/) 帮助器,可以避免需要知道(或设置)生成的 Docker 容器名称。 (3认同)

归档时间:

查看次数:

978 次

最近记录:

4 年,2 月 前