diff options
| -rw-r--r-- | azure-pipelines.yml | 23 | ||||
| -rw-r--r-- | docker-compose.yml | 2 | ||||
| -rw-r--r-- | docker/app/Dockerfile | 46 | ||||
| -rw-r--r-- | docker/app/Dockerfile.local | 49 | ||||
| -rw-r--r-- | docker/app/local.Dockerfile | 26 | 
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"] | 
