diff options
-rw-r--r-- | .dockerignore | 4 | ||||
-rw-r--r-- | docker-compose.yml | 6 | ||||
-rw-r--r-- | docker/app/Dockerfile | 14 | ||||
-rw-r--r-- | docker/app/Dockerfile.local | 49 | ||||
-rwxr-xr-x | docker/app/scripts/migrate.sh | 10 | ||||
-rwxr-xr-x | docker/app/scripts/migrate_and_serve.sh (renamed from docker/app/migrate_and_serve.sh) | 0 | ||||
-rw-r--r-- | docker/pysite.dockerapp | 2 |
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: |