Как запустить образ docker на локальном сервере

Я новичок в Docker и мне нужно запустить докеризованный проект django, который уже написан другим разработчиком, это Dockerfile.dev:

FROM python:alpine
RUN apk update \
    && apk add --virtual build-deps gcc python3-dev musl-dev \
    && apk add postgresql-dev \
    && apk add jpeg-dev zlib-dev libjpeg
ENV PYTHONUNBUFFERED 1

WORKDIR /app
COPY requirements.txt /tmp/
RUN pip install --requirement /tmp/requirements.txt
COPY entrypoint.sh /app/
ENTRYPOINT [ "./entrypoint.sh" ]
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

и dcoker-compose.yml :

services:
    event:
        build:
            context: .
            dockerfile: Dockerfile.dev
        volumes:
            - ./:/app
        
        env_file:
          - ./envs/development.env
        

        command:
            bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
        ports:
          - "8000:8000"
        
        depends_on:
          - event-database


    event-database:
        image: postgres:alpine

        env_file:
            - ./envs/development.db.env

networks:
    default:
        name: mizban

когда я создаю образ с помощью docker build --tag и затем запускаю его с помощью docker run imageid, он не запускает часть CMD для запуска проекта на порту 0.0.0.0:8000, какие-нибудь предложения?

Файл entrypoint всегда имеет приоритет над command. Ваш файл Dockerfile.dev содержит и ENTRYPOINT, и CMD. В этом случае CMD используется в качестве аргумента ENTRYPOINT.

Поэтому если вы хотите запускать только command, но не entrypoint, вам нужно переопределить секцию entrypoint пустой строкой в вашем файле docker-compose.yml.

Обратитесь к следующему примеру.

services:
    event:
        build:
            context: .
            dockerfile: Dockerfile.dev
        volumes:
            - ./:/app
        
        env_file:
          - ./envs/development.env
        
        entrypoint: ""
        command:
            bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
        ports: ...
Вернуться на верх