Я некоторое время следил за книгой Django для профессионалов Уильяма Винсента. Через несколько недель я успешно завершил свой первый проект Dockerized Django / Postgres.
Вместо развертывания в Heroku, я хотел бы попробовать свои силы в DigitalOcean "установка одним щелчком" Docker капелька; однако я боролся.
Шаги, которые я предпринял для развертывания:
- Созданная капелька
- Созданная S SH ключ, новый пользователь
CD-диск в каталог, чтобы вытащить мое репо
$cd home/user/<repo dir>
Вытащил мое репо
$git pull <repo>
Построено Docker машин
docker-compose -f docker-compose-prod.yml up --build -d
# dockerfile
# pull base image
FROM python:3.7
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# set work directory
WORKDIR /code
# install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
# copy project
COPY . /code/
# docker-compose-prod.yml
version: '3.7'
services:
web:
build: .
# command: python /code/manage.py runserver 0.0.0.0:8000
command: gunicorn layoffs.wsgi -b 0.0.0.0:8000
environment:
- ENVIRONMENT=production
- SECRET_KEY=mysecretkey
ports:
- 8000:8000
depends_on:
- db
db:
image: postgres:11
env_file:
- myenv.env
Сборка Docker контейнеров работает, я могу делать такие вещи, как создание суперпользователя, используя docker-compose exec web python manage.py createsuperuser
, запускать миграции и docker-compose logs
показывает, что он готов принимать соединения.
Когда я это делаю a docker ps
Я вижу работающие две машины: службы web
и db
.
Шаги, которые я предпринял с DNS и Django:
- Добавлены записи DNS
NS
из DigitalOcean в записи DNS моего домена - Созданы правила брандмауэра в дроплете, разрешающие входящие / исходящие соединения HTTP / HTTPS
- Ожидание 12 часов
- Проверено
ALLOWED_HOSTS
in settings.py
:
- Попытка перехода на
my.droplet.ip.address
, домен и т. Д. c. в моем браузере без удачи
Вот мои переменные производственной среды:
# settings.py
if ENVIRONMENT == 'production':
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = 'DENY' # clickjacking
SECURE_SSL_REDIRECT = True
SECURE_HSTS_SECONDS = 3600
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
Я надеюсь, что предоставленная мной информация поможет, я ' Мне любопытно, если я просто отправлюсь прямо к Героку, как написано в книге? Хотя я хотел бы воспользоваться более низкими затратами, а также узнать больше о DigitalOcean, если смогу.
Я заранее благодарен за любую помощь или подсказки!