Testdriven.io django tdd - получена ошибка: '$' не является действительным номером порта при запуске docker run

Каждый раз, когда я пытаюсь выполнить команду

docker run --name django-tdd -e "PORT=8765" -p 8008:8765 registry.heroku.com/lit-sierra-68791/web:latest

Я получаю Ошибка: '$' не является действительным номером порта

Dockerfile.prod

# pull official base image
FROM python:3.9.5-slim-buster

# set working directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV DEBUG 0
ENV SECRET_KEY fgerg345y4y56u5u5757jk5k56kuykykyk
ENV DJANGO_ALLOWED_HOSTS localhost 127.0.0.1 [::1]
ENV PORT 8765

# install system dependencies
RUN apt-get update \
  && apt-get -y install gcc postgresql \
  && apt-get clean

# add and install requirements
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt

# add app
COPY . .

# add and run as non-root user
RUN adduser --disabled-password myuser
USER myuser

# run gunicorn
CMD gunicorn drf_project.wsgi:application --bind 0.0.0.0:$PORT

Я даже добавил ENV PORT 8765 в файл выше, но это тоже не сработало.

На переменные ENV нельзя ссылаться в CMD.

Вы можете обойти это, создав сценарий, который считывает переменную и передает ее в CMD.

Создать файл bin/start.sh

#!/bin/sh
gunicorn drf_project.wsgi:application --bind 0.0.0.0:$PORT

Обновление Dockerfile

...
CMD ["bin/start.sh"]
Вернуться на верх