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

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

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

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


Запуск приложения Django и PostgreSQL в Docker Compose



Запуск приложения Django и PostgreSQL в Docker Compose


Компоненты проекта

Dockerfile - файл зависимостей Python
requirements.txt - файл зависмостей для использования в Dockerfile
docker-compose.yml - файл описания служб сборки многоконтейнерного приложения


Создание файлов проекта

Создайте пустой каталог для проекта и перейдите в него:
mkdir -p /tmp/firstproj/data/db ; cd /tmp/firstproj

Создайте файлы ниже

Dockerfile:
FROM python:3 
ENV PYTHONDONTWRITEBYTECODE=1 
ENV PYTHONUNBUFFERED=1 
WORKDIR /code 
COPY requirements.txt /code/ 
RUN pip install -r requirements.txt 
COPY . /code/ 

# базовый образ
# Python не будет пытаться писать файлы .pyc,
# эквивалент указания параметра интерпретатора -u
# рабочая директория
# файл зависимостей
# установка зависимостей
# копируем файлы проекта с локальной машины в контейнер

requirements.txt:
Django>=3.0,<4.0
psycopg2>=2.8

docker-compose.yml:
version: "3"
services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    environment:
      - POSTGRES_NAME=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    depends_on:
      - db

В файле описаны два сервиса db и web, которые создают приложение
Далее в конфигах контенеров эти имена можно использовать вместо ip
Сервисами являются веб-сервер и база данных
Описана взаимосвязь данных сервисов, их тома, порты, переменные
Тома нужны для сохранения результатов работы после остановки контейнеров
Порты описывают проброс порта с локальной машины в контейнер
В переменных мы указываем логин, пароль, бд


Создайте проект Django

В созданной директории создайте проект Django:
sudo docker-compose run web django-admin startproject composeexample .

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

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

Насроим подключение Django к базе данных

Добавьте изменения в файл composeexample/settings.py:
import os
from pathlib import Path

[...]

ALLOWED_HOSTS = ['*']

[...]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('POSTGRES_NAME'),
        'USER': os.environ.get('POSTGRES_USER'),
        'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
        'HOST': 'db',
        'PORT': 5432,
    }
}

composeexample/views.py:
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world!")

composeexample/urls.py:
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
]

Контейнер работает от пользователя root, измените владельца новых файлов:
sudo chown -R $USER:$USER .


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

Теперь через браузер вы получите доступ в url:
http://localhost:8000
http://localhost:8000/admin/login/?next=/admin/

Увидеть запущенные контейнеры в Docker:
docker ps
docker container ls

Остановить службы:
docker-compose down

 


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

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

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

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

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





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