Как запустить проект 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