Как запустить проект django с помощью docker

Я пытаюсь создать контейнер docker для запуска моего проекта django. Следуя другим вопросам, мне удалось добиться успешной сборки с помощью docker.

Я создал Dockerfile, docker-compose и создал локальную базу данных postgres. и если я запускаю проект из точки входа (цепочка makemigration, migrate и runserver), то сервис может быть достигнут.

проблема возникает, когда я докеризирую проект.

мой файл docker-compose.yml имеет следующий вид

version: "3.9"

services:
  db:
    restart: always
    image: postgres:12.0-alpine
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=signalcrossingrestapi
      - POSTGRES_USER=$POSTGRES_LOCAL_USER
      - POSTGRES_PASSWORD=$POSTGRES_LOCAL_PASSWORD
    env_file:
      - ./.env
  web:
    restart: always
    build:
      dockerfile: Dockerfile
      context: .
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
    env_file: .env
    command: ./run.sh
volumes:
  postgres_data:
    driver: local

и dockerfile -

FROM python:3.8-slim
# set up the psycopg2
RUN apt-get update && apt-get install -y libpq-dev gcc postgresql-client


ENV PYTHONUNBUFFERED=1
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"


WORKDIR /code
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /code/
RUN pip install psycopg2==2.8.3

RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt


RUN apt-get autoremove -y gcc

EXPOSE 8000

когда я выполняю

docker-compose up --build

все успешно, но когда я открываю localhost:8000, я не могу попасть на страницу.

каково решение этой проблемы?

manage.py runserver запускает сервер, доступный только с localhost/127.0.0.1, вы должны сделать его доступным и из других мест. Поэтому отредактируйте ваш run.sh следующим образом

python3 manage.py runserver 0.0.0.0:8000
Вернуться на верх