aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.dockerignore4
-rw-r--r--docker-compose.yml6
-rw-r--r--docker/app/Dockerfile14
-rw-r--r--docker/app/Dockerfile.local49
-rwxr-xr-xdocker/app/scripts/migrate.sh10
-rwxr-xr-xdocker/app/scripts/migrate_and_serve.sh (renamed from docker/app/migrate_and_serve.sh)0
-rw-r--r--docker/pysite.dockerapp2
7 files changed, 76 insertions, 9 deletions
diff --git a/.dockerignore b/.dockerignore
index 4ad7c8a7..18ea6955 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -17,10 +17,12 @@ pydis_site/apps/api/tests.py
CHANGELOG.md
CONTRIBUTING.md
docker
-!docker/app/migrate_and_boot.sh
+!docker/app/scripts/migrate_and_boot.sh
+!docker/app/scripts/migrate.sh
!docker/app/uwsgi.ini
docker-compose.yml
Dockerfile
+Dockerfile.local
docs
home/tests
home/tests.py
diff --git a/docker-compose.yml b/docker-compose.yml
index 0c504c40..d415340b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -22,8 +22,8 @@ services:
web:
build:
context: .
- dockerfile: docker/app/Dockerfile
- command: docker/app/migrate_and_serve.sh
+ dockerfile: docker/app/Dockerfile.local
+ command: docker/app/scripts/migrate_and_serve.sh
ports:
- "127.0.0.1:8000:8000"
depends_on:
@@ -39,5 +39,3 @@ services:
volumes:
staticfiles:
-
-# vim: sw=2 ts=2:
diff --git a/docker/app/Dockerfile b/docker/app/Dockerfile
index 52cc6b32..c91c013a 100644
--- a/docker/app/Dockerfile
+++ b/docker/app/Dockerfile
@@ -1,14 +1,17 @@
FROM bitnami/python:3.7-prod
+# I have no idea what this does.
STOPSIGNAL SIGQUIT
ARG EXTRAS=deploy
+# Create a user.
RUN adduser \
--disabled-login \
--no-create-home \
--uid 1500 \
pysite
+# Install prerequisites needed to complete the dependency installation.
RUN apt-get update -y \
&& \
apt-get install --no-install-recommends -y \
@@ -21,24 +24,29 @@ RUN apt-get update -y \
&& \
rm -rf /var/lib/apt/lists/*
+# Set up the working directory.
WORKDIR /app
-
COPY Pipfile Pipfile.lock /app/
+# Pip install the stuff we'll need.
RUN rm -r /opt/bitnami/python/lib/python3.*/site-packages/setuptools* && \
pip install --no-cache-dir -U setuptools
-
RUN python3 -m pip install pipenv \
&& python3 -m pipenv install --system --deploy \
&& pip install uwsgi==2.0.18
+# Copy everything into the docker environment.
COPY . .
-RUN SECRET_KEY=placeholder DATABASE_URL=sqlite:// python3 manage.py collectstatic --no-input --clear --verbosity 0
+# RUN SECRET_KEY=placeholder DATABASE_URL=sqlite:// python3 manage.py collectstatic --no-input --clear --verbosity 0
+# Remove the prerequisites, dependency installation is now complete.
RUN apt-get purge -y \
gcc \
libc-dev \
libpq-dev
+# Migrate, collect and start the app.
+RUN chmod +x /docker/app/scripts/migrate.sh
+ENTRYPOINT ["/docker/app/scripts/migrate.sh"]
CMD ["uwsgi", "--ini", "docker/app/uwsgi.ini"]
diff --git a/docker/app/Dockerfile.local b/docker/app/Dockerfile.local
new file mode 100644
index 00000000..c332c757
--- /dev/null
+++ b/docker/app/Dockerfile.local
@@ -0,0 +1,49 @@
+FROM bitnami/python:3.7-prod
+
+# I have no idea what this does.
+STOPSIGNAL SIGQUIT
+ARG EXTRAS=deploy
+
+# Create a user.
+RUN adduser \
+ --disabled-login \
+ --no-create-home \
+ --uid 1500 \
+ pysite
+
+# Install prerequisites needed to complete the dependency installation.
+RUN apt-get update -y \
+ && \
+ apt-get install --no-install-recommends -y \
+ gcc \
+ libc-dev \
+ libpq-dev \
+ git \
+ && \
+ apt-get clean \
+ && \
+ rm -rf /var/lib/apt/lists/*
+
+# Set up the working directory.
+WORKDIR /app
+COPY Pipfile Pipfile.lock /app/
+
+# Pip install the stuff we'll need.
+RUN rm -r /opt/bitnami/python/lib/python3.*/site-packages/setuptools* && \
+ pip install --no-cache-dir -U setuptools
+RUN python3 -m pip install pipenv \
+ && python3 -m pipenv install --system --deploy \
+ && pip install uwsgi==2.0.18
+
+# Copy everything into the docker environment.
+COPY . .
+
+RUN SECRET_KEY=placeholder DATABASE_URL=sqlite:// python3 manage.py collectstatic --no-input --clear --verbosity 0
+
+# Remove the prerequisites, dependency installation is now complete.
+RUN apt-get purge -y \
+ gcc \
+ libc-dev \
+ libpq-dev
+
+CMD ["uwsgi", "--ini", "docker/app/uwsgi.ini"]
diff --git a/docker/app/scripts/migrate.sh b/docker/app/scripts/migrate.sh
new file mode 100755
index 00000000..94b5f7c4
--- /dev/null
+++ b/docker/app/scripts/migrate.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+echo --- Applying migrations ---
+python manage.py migrate --verbosity 1
+
+echo --- Collecting static files ---
+python manage.py collectstatic --no-input --clear --verbosity 0
+
+echo --- Starting uwsgi ---
+exec "$@" # This runs the CMD at the end of the Dockerfile
diff --git a/docker/app/migrate_and_serve.sh b/docker/app/scripts/migrate_and_serve.sh
index 42bf67a3..42bf67a3 100755
--- a/docker/app/migrate_and_serve.sh
+++ b/docker/app/scripts/migrate_and_serve.sh
diff --git a/docker/pysite.dockerapp b/docker/pysite.dockerapp
index 2426008e..4e90ff87 100644
--- a/docker/pysite.dockerapp
+++ b/docker/pysite.dockerapp
@@ -13,7 +13,7 @@ services:
django:
build:
context: .
- command: docker/app/migrate_and_serve.sh
+ command: docker/app/scripts/migrate_and_serve.sh
ports:
- "127.0.0.1:4000:4000"
environment: