Код на салфетке
06.06
- ENV PYTHONDONTWRITEBYTECODE=1 - Эта переменная окружения говорит Python не записывать файлы байт-кода (.pyc) на диск. Обычно Python автоматически компилирует исходные файлы .py в файлы байт-кода .pyc, чтобы ускорить последующий запуск программы. Однако в контейнерных окружениях это может быть нежелательно
- ENV PYTHONUNBUFFERED=1 - Эта переменная окружения отключает буферизацию вывода Python. По умолчанию Python буферизует ввод и вывод, чтобы улучшить производительность. Это значит, что вывод в терминал или лог-файлы может быть задержан до тех пор, пока буфер не заполнится. Установка этой переменной в 1 отключает буферизацию, что приводит к немедленному выводу всех данных. Это полезно в контейнерных приложениях.
- WORKDIR /code - В этой строке указываем, что рабочая директория с файлами проекта будет по пути /code относительно корневой директории файловой системы /.
- RUN pip install --upgrade pip - В этой строке выполняется команда обновления pip.
- COPY requirements.txt /code/ - В этой строке происходит копирование файла зависимостей в рабочую директорию внутри образа.
- RUN pip install -r requirements.txt - В этой строке происходит установка зависимостей в окружение Python внутри образа.
- COPY . /code/ - В этой строке копируем файлы проекта в рабочую директорию.
- EXPOSE 8000 - В этой строке указываем, что наш образ будет "вещать" на 8000-м порту.
- CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] - В этой строке выполняем команду запуска веб-сервера Django, дополнительно указывая 0.0.0.0:8000, что позволяет веб-серверу вещать не только в пределах 127.0.0.1/localhost, но и быть доступным для других устройств в сети (сетевых интерфейсов).
.dockerignore файл. По аналогии с файлом .gitignore, запрещающим добавление в индекс системы контроля версий нежелательных файлов, таких, как .env или файлов от IDE, для Docker есть такой же файл - .dockerignore. В нашем случае не нужно, чтобы внутрь контейнера попал .env-файл, поэтому в корне проекта создадим .dockerignore-файл.
В файле пропишем всего одну строку – .env.
Копирование файлов на VPS. Скопировать файлы проекта можно разными способами, например, воспользовавшись git (репозиторий на github или другом сервисе) или использовав SFTP.
Я воспользуюсь SFTP и программой для этого WinSCP для Windows. Для этого подойдут и другие программы, например, FileZilla, XFTP и прочие.
Опущу этот процесс, т.к. он индивидуален, и каждый сам выбирает способ доставки файлов проекта на сервер.
Сборка образа. После того, как проект подготовлен и скопированы файлы, приступим к сборке образа.
Запуск Docker-контейнера состоит из двух этапов. Первый – сборка или использование готового образа. В нашем случае готового образа нет, поэтому его необходимо создать. Второй этап заключается в запуске контейнера с указанием параметров запуска и собранного контейнера.
Все дальнейшие действия будут производиться на VPS. Подключитесь к серверу по SSH и перейдите в директорию с проектом. Момент с подключением и работой с сервером я опущу. Если вам нужен гайд по работе с сервером, сообщите об этом в комментариях (Подписчики с Boosty имеют приоритет в просьбах на будущие посты 😉)
Для сборки образа в директории проекта выполним команду:
``` sudo docker build -t project_image .
```
Разберём команду:
- sudo docker - Вызываем Docker с правами администратора (root).
- build - Сообщаем, что нам нужно собрать образ.
- -t project_image - Присваиваем образу тег (имя), по которому будем обращаться к нему. Можно указать просто имя образа, а также дополнительно версию или другое обозначение, например, -t project_image:dev.
еще контент в этом сообществе
еще контент в этом соообществе
Код на салфетке
06.06
войдите, чтобы увидеть
и подписаться на интересных профи