1
0
Fork 0
mirror of https://github.com/EDeev/deev.space.git synced 2026-10-07 20:49:59 +03:00

Docker: образ на python:3.12-slim, compose с томом для базы и media

- Dockerfile: collectstatic при сборке, gunicorn, непривилегированный пользователь,
  база и загрузки в томе /data, миграции при старте;
- compose.yaml для запуска одной командой, .env.example со всеми переменными.
This commit is contained in:
Деев Егор Викторович 2026-10-02 12:10:57 +00:00
parent 268652505a
commit d7739ca203
4 changed files with 89 additions and 0 deletions

14
.dockerignore Normal file
View file

@ -0,0 +1,14 @@
.git
.github
**/__pycache__
*.pyc
.venv
venv
.env
db.sqlite3
media
staticfiles
logs
docs
*.md
!requirements*.txt

32
.env.example Normal file
View file

@ -0,0 +1,32 @@
# Django
DJANGO_SECRET_KEY=change-me-to-a-long-random-string
DJANGO_DEBUG=False
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
# DJANGO_CSRF_TRUSTED_ORIGINS=https://example.com
# DJANGO_SECURE_SSL_REDIRECT=True
# DJANGO_DB_PATH=/data/db.sqlite3
# DJANGO_MEDIA_ROOT=/data/media
# DJANGO_SERVE_MEDIA=False
# Yandex SmartCaptcha (форма обратной связи)
SMARTCAPTCHA_CLIENT_KEY=
SMARTCAPTCHA_SERVER_KEY=
# Автопостинг новых статей (по умолчанию выключен)
SOCIAL_AUTOPOST=False
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHANNEL_ID=
VK_ACCESS_TOKEN=
VK_GROUP_ID=
# Уведомления владельцу о сообщениях с формы (AlertBot)
ALERTBOT_TOKEN=
ALERTBOT_CHAT_ID=
# Почта
EMAIL_HOST=smtp.yandex.ru
EMAIL_PORT=465
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
DEFAULT_FROM_EMAIL=
CONTACT_EMAIL=

23
Dockerfile Normal file
View file

@ -0,0 +1,23 @@
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
DJANGO_DB_PATH=/data/db.sqlite3 \
DJANGO_MEDIA_ROOT=/data/media
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN DJANGO_SECRET_KEY=build-only python manage.py collectstatic --noinput \
&& useradd --create-home --uid 1000 app \
&& mkdir -p /data/media logs \
&& chown -R app:app /data logs
USER app
VOLUME ["/data"]
EXPOSE 8000
CMD ["sh", "-c", "python manage.py migrate --noinput && gunicorn dspace.wsgi:application --bind 0.0.0.0:8000 --workers 3 --access-logfile -"]

20
compose.yaml Normal file
View file

@ -0,0 +1,20 @@
services:
web:
build: .
image: ghcr.io/edeev/deev.space:latest
ports:
- "8000:8000"
env_file:
- path: .env
required: false
environment:
DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY:-change-me-to-a-long-random-string}
DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-localhost,127.0.0.1}
DJANGO_SECURE_SSL_REDIRECT: "False"
DJANGO_SERVE_MEDIA: "True"
volumes:
- data:/data
restart: unless-stopped
volumes:
data: