Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Быстрый старт: Docker Compose и Django


 

Быстрый старт: Docker Compose и Django


Статья является вольным переводом:
https://docs.docker.com/compose/django/


Это краткое руководство демонстрирует, как использовать Docker Compose для настройки и запуска простого приложения Django и PostgreSQL
Перед началом установки установите Docker Compose


Определить компоненты проекта

Для этого проекта вам нужно создать Dockerfile, файл зависимостей Python и файл docker-compose.yml
Вы можете использовать расширение .yml или .yaml для этого файла


1. Создайте пустой каталог проекта и каталог для бд, чтоб при перезагрузке данные сохранились:
mkdir -p /data/pd
mkdir -p /data/postgres_data

2. Создайте новый файл с именем Dockerfile в каталоге вашего проекта
touch /data/pd/Dockerfile

3. Добавьте следующее содержимое в Dockerfile:
cat > /data/pd/Dockerfile << EOF
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY require.txt /code/
RUN pip install -r require.txt
COPY . /code/
EOF

4. Создайте файл require.txt в каталоге вашего проекта
touch /data/pd/require.txt

5. Добавьте необходимое программное обеспечение в файл
cat > /data/pd/require.txt << EOF
Django>=2.0,<3.0
psycopg2>=2.7,<3.0
EOF

6. Создайте файл с именем docker-compose.yml в каталоге вашего проекта
cat > /data/pd/docker-compose.yml << EOF
version: '3'

services:
  db:
    image: postgres
    volumes:
      - /data/postgres_data:/var/lib/postgresql/data/
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

volumes:
  postgres_data:
EOF

 

Создание проекта Django


Перейдите в корневой каталог вашего проекта
cd /data/pd/

Создайте проект Django, выполнив команду docker-compose run следующим образом
docker-compose run web django-admin startproject composeexample .


Это указывает Compose запустить django-admin startproject composeexample в контейнере
Используется образ и конфигурация web
Поскольку web образа еще не существует, Compose создает его из текущего каталога, как указано в docker-compose.yml

После создания образа web, Compose запустит его и выполнит команду startproject django-admin в контейнере
Эта команда указывает Django создать набор файлов и каталогов, представляющих проект Django

Получите:
WARNING:
Image for service web was built because it did not already exist.
To rebuild this image you must use `docker-compose build` or `docker-compose up --build`

Выполняем:
docker-compose build && docker-compose up -d

Или:
docker-compose up -d --build


Проверяем:
docker ps
CONTAINER ID  IMAGE     COMMAND                 PORTS                   NAMES
f0423ae14fe1  pd_web    "python manage.py ru…"  0.0.0.0:8000->8000/tcp  pd_web_1
56fdbdfb008b  postgres  "docker-entrypoint.s…"  5432/tcp                pd_db_1


ls -l
drwxr-xr-x. 3 root root  93 Jan 28 08:26 composeexample
-rw-r--r--. 1 root root   0 Jan 28 08:26 db.sqlite3
-rw-r--r--. 1 root root 210 Jan 28 08:06 docker-compose.yml
-rw-r--r--. 1 root root 136 Jan 28 08:23 Dockerfile
-rwxr-xr-x. 1 root root 546 Jan 28 08:23 manage.py
-rw-r--r--. 1 root root  36 Jan 28 08:04 require.txt

ls -l composeexample/
-rw-r--r--. 1 root root    0 Jan 28 08:23 __init__.py
drwxr-xr-x. 2 root root  122 Jan 28 08:26 __pycache__
-rw-r--r--. 1 root root 3112 Jan 28 08:23 settings.py
-rw-r--r--. 1 root root  756 Jan 28 08:23 urls.py
-rw-r--r--. 1 root root  405 Jan 28 08:23 wsgi.py

 

Подключите базу данных


В этом разделе вы настраиваете соединение с базой данных для Django

В каталоге вашего проекта отредактируйте файл composeexample/settings.py

Замените DATABASES = ... следующим текстом:
#DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#    }
#}
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

Эти настройки определяются образом Docker postgres, указанным в docker-compose.yml


Запустите команду docker-compose up из каталога вашего проекта:
docker-compose build
docker-compose up -d


Проверяем:

http://localhost:8000
The install worked successfully! Congratulations!
You are seeing this page because DEBUG=True is in your settings file and you have not configured any URLs.

http://localhost:8000/admin/login/?next=/admin/
Django administration
Username:
Password:


Замечание:
На некоторых платформах (Windows 10) вам может понадобиться отредактировать ALLOWED_HOSTS в файле settings.py
Добавить имя хоста или IP-адрес Docker в список.
Для демонстрационных целей вы можете установить значение:
ALLOWED_HOSTS = ['*']

Это значение не безопасно для производственного использования
Обратитесь к документации Django для получения дополнительной информации


Проверяем:
docker ps
CONTAINER ID  IMAGE     COMMAND                 PORTS                   NAMES
f0423ae14fe1  pd_web    "python manage.py ru…"  0.0.0.0:8000->8000/tcp  pd_web_1
56fdbdfb008b  postgres  "docker-entrypoint.s…"  5432/tcp                pd_db_1

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект