diff --git a/.gitignore b/.gitignore index 3a78f1e..c234e10 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ mysite/__pycache__ venv polls/__pycache__ polls/migrations/__pycache__ +.env diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b1750b1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.11-alpine +WORKDIR /app +COPY requirements.txt . +RUN pip install -r requirements.txt + +COPY ./mysite ./mysite +COPY ./polls ./polls +COPY ./manage.py . + +RUN ./manage.py makemigrations +# RUN ./manage.py migrate + +COPY docker-entrypoint.sh . + +EXPOSE 8000 + +CMD [ "./docker-entrypoint.sh" ] diff --git a/compose.yaml b/compose.yaml index 38cc7bf..021cdfa 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,6 +1,21 @@ services: + app: + build: . + container_name: django-app + ports: + - "80:8000" + depends_on: + - db + environment: + DATABASE_NAME: ${DATABASE_NAME} + DATABASE_USERNAME: ${DATABASE_USERNAME} + DATABASE_HOST: ${DATABASE_HOST} + DATABASE_PASSWORD: ${DATABASE_PASSWORD} + DATABASE_PORT: ${DATABASE_PORT} + env_file: + - .env db: - image: postgres + image: postgres:14 restart: always # set shared memory limit when using docker compose shm_size: 128mb @@ -10,15 +25,13 @@ services: # target: /dev/shm # tmpfs: # size: 134217728 # 128*2^20 bytes = 128Mb - ports: - - "5432:5432" - + container_name: postgres + volumes: + - pg-data:/var/lib/postgresql/data environment: POSTGRES_USER: sa POSTGRES_PASSWORD: example + POSTGRES_PORT: 5432 - adminer: - image: adminer - restart: always - ports: - - 8080:8080 +volumes: + pg-data: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100755 index 0000000..b942dc5 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Collect static files +echo "Collect static files" +python manage.py collectstatic --noinput + +# Apply database migrations +echo "Apply database migrations" +python manage.py migrate + +# Start server +echo "Starting server" +python manage.py runserver 0.0.0.0:8000 diff --git a/mysite/settings.py b/mysite/settings.py index 9fad206..0a5c1ea 100644 --- a/mysite/settings.py +++ b/mysite/settings.py @@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/5.2/ref/settings/ """ from pathlib import Path +import os # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -20,12 +21,12 @@ BASE_DIR = Path(__file__).resolve().parent.parent # See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = "django-insecure-7@a)l@%smekjdwtc%$)k=qs^5k8@fnmc+vxk)(!mi5ojrbhgn+" +SECRET_KEY = os.getenv("DJANGO_SECRET_KEY") # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ["localhost"] # Application definition @@ -78,11 +79,11 @@ WSGI_APPLICATION = "mysite.wsgi.application" DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", - "OPTIONS": { - "service": "my_service", - "passfile": ".pgpass", - }, - "PASSWORD":"example", + 'NAME': os.getenv('DATABASE_NAME', 'sa'), + 'USER': os.getenv('DATABASE_USERNAME', 'sa'), + "PASSWORD": os.getenv('DATABASE_PASSWORD', "example"), + 'HOST': os.getenv('DATABASE_HOST', 'db'), + 'PORT': os.getenv('DATABASE_PORT', 5432), } } diff --git a/polls/static/polls/style.css b/polls/static/polls/style.css index 188d33b..b9f05ec 100644 --- a/polls/static/polls/style.css +++ b/polls/static/polls/style.css @@ -3,6 +3,20 @@ li a { } body { - background: white url("images/background.jpg") no-repeat; + background: white; background-position: top; + font-size: 200%; +} + +h1 { + text-align: center; +} + +div { + text-align: center; +} +ul { + display: inline-block; + padding: 0; + margin: 0; } diff --git a/polls/templates/polls/index.html b/polls/templates/polls/index.html index f30699e..fe16ec3 100644 --- a/polls/templates/polls/index.html +++ b/polls/templates/polls/index.html @@ -2,12 +2,16 @@ +
No polls are available.
{% endif %} diff --git a/requirements.txt b/requirements.txt index e122d9e..ab453d0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,8 @@ asgiref==3.8.1 Django==5.2.1 django-debug-toolbar==5.2.0 pip==23.0.1 +psycopg==3.2.9 +psycopg-binary==3.2.9 setuptools==66.1.1 sqlparse==0.5.3 +typing_extensions==4.14.0