Вы должны использовать CMD
в вашем Dockerfile, чтобы указать это. Поскольку вам нужно указывать это каждый раз, когда вы запускаете контейнер на основе изображения, нет необходимости указывать его вручную при запуске образа.
CMD python3.8 -m pipenv run flask run -h 0.0.0.0
В контексте Docker контейнер, типично устанавливать пакеты в «систему» Python: он уже изолирован от хоста Python благодаря тому, что находится в контейнере Docker, и настройка для использования виртуальной среды немного сложна , Это избавляет от необходимости запускать pipenv run
.
FROM python:3.8
WORKDIR /code
COPY Pipfile Pipfile.lock .
RUN pipenv install --deploy --system
COPY . .
CMD flask run -h 0.0.0.0
Так как каталог /code
уже находится в вашем образе, вы можете на самом деле сделать docker-compose.yml
короче, удалив ненужное крепление для привязки
version: '3'
services:
web:
build: .
ports:
- "4000:4000"
# no volumes: