The Compose file '.\docker-compose.yml' is invalid because: services.server.ports is invalid: Port ranges don't match in length

Файл server.env, находится на одном уровне с docker-compose.yml

  • docker-compose.yml
version: "3"
services:
  server:

    env_file:
      - server.env

    build: server/

    command: python ./server.py

    ports:
      - ${EXTERNAL_PORT}:1234

  client:

    build: client/
    command: python ./client.py

    network_mode: host

    depends_on:
      - server
  • server.env
EXTERNAL_PORT=1234

Я также пытался из командной строки запустить (разумеется тогда настройки из *.env не должны учитываться)...

docker-compose run -e EXTERNAL_PORT=1234 server python server.py
WARNING: The EXTERNAL_PORT variable is not set. Defaulting to a blank string.
ERROR: The Compose file '.\docker-compose.yml' is invalid because:
services.server.ports is invalid: Port ranges don't match in length

вот один из примеров, что нашел

введите сюда описание изображения

Подскажите в чем ошибка может быть.


Ответы (1 шт):

Автор решения: Exploding Kitten

env_file предназначен для того, чтобы создавать переменные внутри контейнера, т.е. в вашем случае внутри server контейнера будет существовать EXTERNAL_PORT.

Для того, чтобы это начало работать в docker-compose.yml нужно назвать файл .env (без слова server) и соответственно исправить docker-compose.yml:

env_file:
  - .env

Тогда при вызове docker-compose up все будет ок.

→ Ссылка