From c36ae94851873b7e51351fbf724270b6dfdae628 Mon Sep 17 00:00:00 2001 From: Dmitriy Lyalyuev Date: Fri, 14 Oct 2022 11:40:47 +0300 Subject: [PATCH] feat: dockerize app --- .dockerignore | 2 ++ .github/workflows/build.yaml | 0 Dockerfile | 26 ++++++++++++++++++++++++++ later42/settings.py | 17 ++++++++++++++++- later42/static/apps/later42.shortcut | Bin 0 -> 24267 bytes later42/urls.py | 1 - requirements.txt | 1 + start.sh | 4 ++++ static/.keep | 0 9 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/build.yaml create mode 100644 Dockerfile create mode 100644 later42/static/apps/later42.shortcut create mode 100644 start.sh create mode 100644 static/.keep diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..101616a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +./venv +./db/db.sqlite3 diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..e69de29 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..70ec5db --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM python:3.10-alpine + +ENV PYTHONUNBUFFERED 1 + +ADD requirements.txt /opt/requirements.txt + +RUN set -ex \ + && apk add --no-cache --virtual .build-deps postgresql-dev build-base \ + jpeg-dev zlib-dev libjpeg libxml2-dev libxslt-dev \ + && pip install --upgrade pip \ + && pip install --no-cache-dir -r /opt/requirements.txt \ + && runDeps="$(scanelf --needed --nobanner --recursive /env \ + | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \ + | sort -u \ + | xargs -r apk info --installed \ + | sort -u)" \ + && apk add --virtual rundeps $runDeps \ + && apk del .build-deps + +WORKDIR /opt + +EXPOSE 8000 +CMD ["./start.sh"] + +ADD . /opt +RUN chmod 755 /opt/start.sh diff --git a/later42/settings.py b/later42/settings.py index 974d2ca..6dbd249 100644 --- a/later42/settings.py +++ b/later42/settings.py @@ -23,7 +23,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.getenv('SECRET', 'django-insecure-c%g@wujt4dco#e%k-!25o3)0%t+wm5=k%l(m!kk^p_g%kknod!') # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = os.getenv('DEBUG', 'False') ALLOWED_HOSTS = ['*'] @@ -45,6 +45,7 @@ INSTALLED_APPS = [ MIDDLEWARE = [ # 'later42.logging.debug.ExceptionLoggingMiddleware', 'django.middleware.security.SecurityMiddleware', + 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', @@ -84,6 +85,17 @@ DATABASES = { } } +if os.getenv('DB_TYPE') == 'postgres': + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'HOST': os.environ.get('DB_HOST'), + 'NAME': os.environ.get('DB_NAME'), + 'USER': os.environ.get('DB_USER'), + 'PASSWORD': os.environ.get('DB_PASS'), + } + } + # Password validation # https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators @@ -123,6 +135,9 @@ STATIC_URL = 'static/' STATICFILES_DIRS = [ BASE_DIR / "later42/static", ] +STATIC_ROOT = BASE_DIR / "static" +STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage" + # Default primary key field type # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field diff --git a/later42/static/apps/later42.shortcut b/later42/static/apps/later42.shortcut new file mode 100644 index 0000000000000000000000000000000000000000..b54623e21cfe6d3726a83f6e83b64dea7b8697a4 GIT binary patch literal 24267 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 RZQ_0)x5Y1`KmTV)|1UgmeGC8q literal 0 HcmV?d00001 diff --git a/later42/urls.py b/later42/urls.py index 21af61f..229dc35 100644 --- a/later42/urls.py +++ b/later42/urls.py @@ -43,7 +43,6 @@ urlpatterns = [ path('admin/', admin.site.urls), path('signup/', signup.register, name='signup'), path("accounts/login/", LoginView.as_view(authentication_form=CustomLoginForm), name="login"), - path('accounts/', include('django_registration.backends.activation.urls')), path("accounts/", include("django.contrib.auth.urls")), path('profile/', profile.get, name='profile'), path('api/url/', api.URL.as_view(), name='urls'), diff --git a/requirements.txt b/requirements.txt index 2968a99..bdba665 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ loguru==0.6.0 bs4==0.0.1 requests==2.28.1 djangorestframework==3.14.0 +whitenoise==6.2.0 diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..d4698a0 --- /dev/null +++ b/start.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +./manage.py migrate --noinput +exec gunicorn --bind :8000 --workers 4 later42.wsgi:application diff --git a/static/.keep b/static/.keep new file mode 100644 index 0000000..e69de29