DigitalOcean: Развертывание Dockerized Django / PostgreSQL и указание на домен - PullRequest
0 голосов
/ 16 апреля 2020

Я некоторое время следил за книгой Django для профессионалов Уильяма Винсента. Через несколько недель я успешно завершил свой первый проект Dockerized Django / Postgres.

Вместо развертывания в Heroku, я хотел бы попробовать свои силы в DigitalOcean "установка одним щелчком" Docker капелька; однако я боролся.

Шаги, которые я предпринял для развертывания:

  1. Созданная капелька
  2. Созданная S SH ключ, новый пользователь
  3. CD-диск в каталог, чтобы вытащить мое репо

    $cd home/user/<repo dir>

  4. Вытащил мое репо

    $git pull <repo>

  5. Построено 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:

  1. Добавлены записи DNS NS из DigitalOcean в записи DNS моего домена
  2. Созданы правила брандмауэра в дроплете, разрешающие входящие / исходящие соединения HTTP / HTTPS
  3. Ожидание 12 часов
  4. Проверено ALLOWED_HOSTS in settings.py:
  5. Попытка перехода на 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, если смогу.

Я заранее благодарен за любую помощь или подсказки!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...