From 2ee9f9a12921a2553c0fd8bc690ce9d6a06c2e99 Mon Sep 17 00:00:00 2001 From: Chris Caron Date: Mon, 13 Nov 2023 16:40:47 -0500 Subject: [PATCH] Dockerized development to work in --- Dockerfile.py310 | 48 ++++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 21 ++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 Dockerfile.py310 diff --git a/Dockerfile.py310 b/Dockerfile.py310 new file mode 100644 index 0000000..2fc7883 --- /dev/null +++ b/Dockerfile.py310 @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# BSD 2-Clause License +# +# Apprise-API - Push Notification Library. +# Copyright (c) 2023, Chris Caron +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Base +FROM python:3.10-buster +RUN apt-get update && \ + apt-get install -y --no-install-recommends build-essential musl-dev bash && \ + rm -rf /var/lib/apt/lists/* + +# Apprise Setup +VOLUME ["/apprise-api"] +WORKDIR /apprise-api +COPY requirements.txt / +COPY dev-requirements.txt / +ENV PYTHONPATH /apprise-api +ENV PYTHONPYCACHEPREFIX /apprise-api/__pycache__/py310 + +RUN pip install --no-cache-dir -r /requirements.txt -r /dev-requirements.txt + +RUN addgroup --gid ${USER_GID:-1000} apprise +RUN adduser --system --uid ${USER_UID:-1000} --ingroup apprise --home /apprise-api --no-create-home --disabled-password apprise + +USER apprise diff --git a/docker-compose.yml b/docker-compose.yml index b8694a2..153d183 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,3 +20,24 @@ services: # $> chown -R 33:33 ./attach # $> chmod -R 775 ./attach # - ./attach:/attach:rw + + ## Un-comment the below and then access a testing environment with: + ## docker-compose run --service-ports --rm test.py310 bash + ## + ## From here you + ## > Check for any lint errors + ## flake8 apprise_api + ## + ## > Run unit tests + ## pytest apprise_api + ## + ## > Host service (visit http://localhost on host pc to access): + ## ./manage.py runserver 0.0.0.0:8000 + #test.py310: + # ports: + # - 8000:8000 + # build: + # context: . + # dockerfile: Dockerfile.py310 + # volumes: + # - ./:/apprise-api