aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--azure-pipelines.yml23
-rw-r--r--docker-compose.yml2
-rw-r--r--docker/app/Dockerfile46
-rw-r--r--docker/app/Dockerfile.local49
-rw-r--r--docker/app/local.Dockerfile26
5 files changed, 47 insertions, 99 deletions
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index de6237d8..963f3020 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -75,23 +75,18 @@ jobs:
testResultsFiles: "**/TEST-*.xml"
testRunTitle: 'Site-Django Test Results'
-- job: docker
- displayName: 'Build & Push Job'
+- job: build
+ displayName: 'Build & Push Container'
dependsOn: coverage_test
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
- pool:
- vmImage: ubuntu-16.04
steps:
- - task: Docker@1
- displayName: Login to Docker Hub
+ - task: Docker@2
+ displayName: 'Build & Push Container'
inputs:
- containerregistrytype: 'Container Registry'
- dockerRegistryEndpoint: 'DockerHub'
- command: 'login'
-
- - script: |
- docker build -t pythondiscord/site:latest -f docker/app/Dockerfile .
- docker push pythondiscord/site:latest
- displayName: 'Build & Push Docker Image'
+ containerRegistry: 'DockerHubV2'
+ repository: 'pythondiscord/site'
+ command: 'buildAndPush'
+ Dockerfile: 'docker/app/Dockerfile'
+ tags: 'latest'
diff --git a/docker-compose.yml b/docker-compose.yml
index d415340b..0a8e6bcd 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -22,7 +22,7 @@ services:
web:
build:
context: .
- dockerfile: docker/app/Dockerfile.local
+ dockerfile: docker/app/local.Dockerfile
command: docker/app/scripts/migrate_and_serve.sh
ports:
- "127.0.0.1:8000:8000"
diff --git a/docker/app/Dockerfile b/docker/app/Dockerfile
index 903e7dc6..15b1f77b 100644
--- a/docker/app/Dockerfile
+++ b/docker/app/Dockerfile
@@ -2,49 +2,25 @@ FROM bitnami/python:3.7-prod
# I have no idea what this does.
STOPSIGNAL SIGQUIT
-ARG EXTRAS=deploy
+
+ENV PIP_NO_CACHE_DIR=false \
+ PIPENV_HIDE_EMOJIS=1 \
+ PIPENV_NOSPIN=1
# Create a user.
-RUN adduser \
- --disabled-login \
- --no-create-home \
- --uid 1500 \
- pysite
+RUN useradd --system --shell /bin/false --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/*
+RUN install_packages git uwsgi
-# Set up the working directory.
+# Copy the project files into 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
+# Update setuptools by removing egg first, add other dependencies
+RUN rm -r /opt/bitnami/python/lib/python3.*/site-packages/setuptools* && \
+ pip install --no-cache-dir -U setuptools pipenv
+RUN pipenv install --system --deploy
# Migrate, collect and start the app.
RUN chmod +x /app/docker/app/scripts/migrate.sh
diff --git a/docker/app/Dockerfile.local b/docker/app/Dockerfile.local
deleted file mode 100644
index c332c757..00000000
--- a/docker/app/Dockerfile.local
+++ /dev/null
@@ -1,49 +0,0 @@
-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/local.Dockerfile b/docker/app/local.Dockerfile
new file mode 100644
index 00000000..124dab95
--- /dev/null
+++ b/docker/app/local.Dockerfile
@@ -0,0 +1,26 @@
+FROM bitnami/python:3.7-prod
+
+STOPSIGNAL SIGQUIT
+
+ENV PIP_NO_CACHE_DIR=false \
+ PIPENV_HIDE_EMOJIS=1 \
+ PIPENV_NOSPIN=1
+
+# Create a user.
+RUN useradd --system --shell /bin/false --uid 1500 pysite
+
+# Install prerequisites needed to complete the dependency installation.
+RUN install_packages git uwsgi
+
+# Copy the project files into the working directory.
+WORKDIR /app
+COPY . .
+
+# Update setuptools by removing egg first, add other dependencies
+RUN rm -r /opt/bitnami/python/lib/python3.*/site-packages/setuptools* && \
+ pip install --no-cache-dir -U setuptools pipenv
+RUN pipenv install --system --deploy
+
+RUN SECRET_KEY=placeholder DATABASE_URL=sqlite:// python3 manage.py collectstatic --no-input --clear --verbosity 0
+
+CMD ["uwsgi", "--ini", "docker/app/uwsgi.ini"]