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:
parent
268652505a
commit
d7739ca203
4 changed files with 89 additions and 0 deletions
14
.dockerignore
Normal file
14
.dockerignore
Normal 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
32
.env.example
Normal 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
23
Dockerfile
Normal 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
20
compose.yaml
Normal 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:
|
||||
Loading…
Add table
Reference in a new issue