Dockerfile:
FROM python:3.6.5-jessie
MAINTAINER example-user
RUN apt-get update \
&& apt-get install -y vim
RUN mkdir require
COPY ./requirements.txt require/requirements.txt
RUN pip install -r require/requirements.txt
EXPOSE 8000
requirements.txt:
Django==2.0.2
Как и выше, я создал образ с именем sample-image
.
Затем я запустил контейнер из sample-image
, например,
docker run -ti --name sample_django -p 8001:8000 sample-image /bin/bash
И на контейнере bash я скомандовал вроде:
root@4a947abf5ce5:/# mkdir startdir && cd startdir
root@4a947abf5ce5:/startdir# django-admin startproject sample .
root@4a947abf5ce5:/startdir# python manage.py runserver
он вернул его:
Performing system checks...
System check identified no issues (0 silenced).
You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 01, 2018 - 12:44:45
Django version 2.0.2, using settings 'sample.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Поскольку я установил -p 8001: 8000 для запущенного контейнера, я нашел эту страницу в браузере (127.0.0.1:8080), но он вернул ее:
ВОПРОС: Как правильно установить порт на контейнере? Или я что-то пропустил?
Внутри контейнера докеров используйте python manage.py runserver 0.0.0.0:8000
, чтобы runserver
не просто привязывался к 127.0.0.1
.
@Alasdair Спасибо, Alasdair, если вы ответите как ответ, я приму ваш ответ.