Докеризованное приложение python.django не запускается в браузере
У меня есть приложение python-django, созданное в ubuntu OS, которое я пытаюсь контейнеризировать. Docker собирается и запускается без ошибок. Но когда я пытаюсь просмотреть сайт в браузере, я его не вижу
Это мои разрешенные хосты в settings.py
ALLOWED_HOSTS = ["localhost", "127.0.0.1","0.0.0.0"]
А это мой dockerfile
#base image
FROM python:3.10
# setup environment variable
ENV DockerHOME=/home/app
RUN mkdir -p $DockerHOME
WORKDIR $DockerHOME
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install dependencies
RUN pip3 install --upgrade pip
# copy whole project to your docker home directory.
COPY . $DockerHOME
# run this command to install all dependencies
RUN pip3 install -r requirements.txt
# port where the Django app runs
EXPOSE 8000
# start server
CMD python3 manage.py runserver 0.0.0.0:8000
Я пытался запустить его следующими командами, но безуспешно.
sudo docker run -p 8000:8000 myapp:v0
#also the following
sudo docker run myapp:v0
Я просматриваю сайт с помощью http://0.0.0.0:8000/. Я пробовал с докерным ip http://172.17.0.2:80000
Так что не уверен, что я упускаю. Любая идея будет очень признательна.
Здесь я создаю новый Dockerfile
и docker-compose
файл на основе вашего проекта.
Dockerfile:
FROM python:3.9-alpine3.13
ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /tmp/requirements.txt #here copied requirements.txt into tmp folder
COPY ./your_project_name /app #here copied your project into app directory
WORKDIR /app #This is current working directory
EXPOSE 8000
RUN python -m venv /py && \ #here created venv as py
/py/bin/pip install --upgrade pip && \
apk add --update --no-cache postgresql-client jpeg-dev && \
apk add --update --no-cache --virtual .tmp-build-deps \
build-base postgresql-dev musl-dev zlib zlib-dev linux-headers && \
/py/bin/pip install -r /tmp/requirements.txt && \
rm -rf /tmp && \ #here removed tmp folder after installing all the requirements
apk del .tmp-build-deps && \
mkdir -p /vol/web/media && \ #here created a directory for static and media
mkdir -p /vol/web/static && \
docker-compose:
version: '3.9'
services:
app: #This is your project container
build:
context: .
args:
- DEV=true
ports:
- '8000:8000'
volumes:
- ./app:/app
- dev-static-data:/vol/web
command: >
sh -c 'python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000'
environment:
- DB_HOST=db #don't change this
- DB_NAME=add here db name
- DB_USER=addhere user name
- DB_PASS=add here password
- DEBUG=1
depends_on:
- db #here connected database to project container
db:
image: postgres:13-alpine
volumes:
- dev-db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=your db name #here I used postgres as database
- POSTGRES_USER=your user name
- POSTGRES_PASSWORD=your password
volumes:
dev-db-data:
dev-static-data:
Примечание: после добавления вышеперечисленных вещей не забудьте собрать dockerfile и docker-compose файл.
После сборки dockerfile и docker-compose, запустите этот проект с помощью команды docker-compose up
, после чего вы сможете просмотреть этот докеризованный проект в веб-браузере.
Я создал для вас этот dockerfile и docker-compose файл.