diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7292754 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + diff --git a/Dockerfile b/Dockerfile index e69de29..587fff5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.8-slim-buster +RUN apt-get update -y && \ + apt-get install -y python-pip python-dev && \ + apt-get install -y libpq-dev && \ + apt-get install -y postgresql-client + +WORKDIR /app +COPY ./requirements.txt /app/requirements.txt +RUN pip install -r requirements.txt + +COPY ./start.sh /app/start.sh +RUN chmod +x /app/start.sh + + +EXPOSE 8000 +ENV PYTHONPATH='.' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..39a664f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3' + +volumes: + local_postgres_data: {} + local_postgres_data_backups: {} + +services: + db: + image: postgres + volumes: + - local_postgres_data:/var/lib/postgresql/data + - local_postgres_data_backups:/backups + env_file: + - .env + + web: + build: . + command: ./start.sh + volumes: + - .:/app + ports: + - "8000:8000" + depends_on: + - db + env_file: + - .env diff --git a/requirements.txt b/requirements.txt index 1e97191..7284868 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ ansible==2.9.9 Django==3.0.6 +psycopg2==2.8.5 diff --git a/sample/settings.py b/sample/settings.py index 8fe1b86..6e6e229 100644 --- a/sample/settings.py +++ b/sample/settings.py @@ -75,8 +75,12 @@ DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'sample', + 'USER': 'postgres', + 'PASSWORD': os.environ['POSTGRES_PASSWORD'], + 'HOST': 'db', + 'PORT': 5432, } } diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..c01fa59 --- /dev/null +++ b/start.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +RETRIES=5 +until PGPASSWORD="$POSTGRES_PASSWORD" psql -h db -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select 1" || [ $RETRIES -eq 0 ]; do + echo "Waiting for postgres server, $((RETRIES)) remaining attempts..." + RETRIES=$((RETRIES-=1)) + sleep 1 +done + +python manage.py migrate + +superuser_name=admin +superuser_email=admin@quansight.com + +script=$(cat <