mirror of
https://github.com/caronc/apprise-api.git
synced 2025-01-08 06:59:25 +01:00
Merge pull request #2 from caronc/docker-hub-integration
Docker hub integration
This commit is contained in:
commit
39336ca6a4
57
Dockerfile
Normal file
57
Dockerfile
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
# Use the standard Nginx image from Docker Hub
|
||||||
|
FROM nginx
|
||||||
|
|
||||||
|
# set version label
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG VERSION
|
||||||
|
ARG HEALTHCHECKS_RELEASE
|
||||||
|
LABEL build_version="Apprise API version:- ${VERSION} Build-date:- ${BUILD_DATE}"
|
||||||
|
LABEL maintainer="Chris-Caron"
|
||||||
|
|
||||||
|
# set environment variables
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE 1
|
||||||
|
ENV PYTHONUNBUFFERED 1
|
||||||
|
ENV APPRISE_CONFIG_DIR /config
|
||||||
|
|
||||||
|
# Install Python Dependencies
|
||||||
|
COPY ./requirements.txt etc/requirements.txt
|
||||||
|
|
||||||
|
# Install Python
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y curl python3 python3-pip && \
|
||||||
|
pip3 install -r etc/requirements.txt gunicorn
|
||||||
|
|
||||||
|
# Install s6-overlay
|
||||||
|
RUN curl -fL -o /tmp/s6-overlay.tar.gz \
|
||||||
|
https://github.com/just-containers/s6-overlay/releases/download/v1.22.1.0/s6-overlay-amd64.tar.gz \
|
||||||
|
&& tar -xzf /tmp/s6-overlay.tar.gz -C / \
|
||||||
|
&& rm -rf /tmp/*
|
||||||
|
|
||||||
|
ENV S6_KEEP_ENV=1 \
|
||||||
|
S6_CMD_WAIT_FOR_SERVICES=1
|
||||||
|
|
||||||
|
# Copy our static content in place
|
||||||
|
COPY apprise_api/static /usr/share/nginx/html/s/
|
||||||
|
|
||||||
|
# System Configuration
|
||||||
|
COPY etc /etc/
|
||||||
|
|
||||||
|
# set work directory
|
||||||
|
WORKDIR /opt/apprise
|
||||||
|
|
||||||
|
# Copy over Apprise API
|
||||||
|
COPY apprise_api/ webapp
|
||||||
|
|
||||||
|
# gunicorn to expose on port 8080
|
||||||
|
# nginx to expose on port 8000
|
||||||
|
# disable logging on gunicorn
|
||||||
|
RUN \
|
||||||
|
sed -i -e 's/backend:8000/localhost:8080/g' \
|
||||||
|
-e 's/listen\([ \t]\+\)[^;]\+;/listen\18000;/g' \
|
||||||
|
/etc/nginx/conf.d/default.conf && \
|
||||||
|
sed -i -e 's/:8000/:8080/g' /opt/apprise/webapp/gunicorn.conf.py
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
VOLUME /config
|
||||||
|
|
||||||
|
ENTRYPOINT ["/init"]
|
@ -2,8 +2,7 @@
|
|||||||
FROM nginx
|
FROM nginx
|
||||||
|
|
||||||
# Copy our customized NginX configuration (for container usage)
|
# Copy our customized NginX configuration (for container usage)
|
||||||
COPY apprise_api/nginx.conf /etc/nginx/nginx.conf
|
COPY etc/nginx /etc/nginx/
|
||||||
COPY apprise_api/apprise_api.conf /etc/nginx/conf.d/default.conf
|
|
||||||
|
|
||||||
# Copy our static content in place
|
# Copy our static content in place
|
||||||
COPY apprise_api/static /usr/share/nginx/html/s/
|
COPY apprise_api/static /usr/share/nginx/html/s/
|
||||||
|
38
README.md
38
README.md
@ -9,7 +9,8 @@ Take advantage of [Apprise](https://github.com/caronc/apprise) through your netw
|
|||||||
Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.
|
Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.
|
||||||
|
|
||||||
[![Paypal](https://img.shields.io/badge/paypal-donate-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MHANV39UZNQ5E)
|
[![Paypal](https://img.shields.io/badge/paypal-donate-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MHANV39UZNQ5E)
|
||||||
[![Discord](https://img.shields.io/discord/558793703356104724.svg?colorB=7289DA&label=Discord&logo=Discord&logoColor=7289DA&style=flat-square)](https://discord.gg/MMPeN2D)
|
[![Discord](https://img.shields.io/discord/558793703356104724.svg?colorB=7289DA&label=Discord&logo=Discord&logoColor=7289DA&style=flat-square)](https://discord.gg/MMPeN2D)<br/>
|
||||||
|
[![Docker Pulls](https://img.shields.io/docker/pulls/caronc/apprise.svg?style=flat-square)](https://hub.docker.com/r/caronc/apprise)
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
There is a small built-in *Configuration Manager* that can be accesed using `/cfg/{KEY}`:<br/>
|
There is a small built-in *Configuration Manager* that can be accesed using `/cfg/{KEY}`:<br/>
|
||||||
@ -18,6 +19,30 @@ There is a small built-in *Configuration Manager* that can be accesed using `/cf
|
|||||||
Below is a screenshot of how you can set either a series of URL's to your `{KEY}`, or set your YAML and/or TEXT configuration below.
|
Below is a screenshot of how you can set either a series of URL's to your `{KEY}`, or set your YAML and/or TEXT configuration below.
|
||||||
![Screenshot of GUI - Configuration](https://raw.githubusercontent.com/caronc/apprise-api/master/Screenshot-2.png)
|
![Screenshot of GUI - Configuration](https://raw.githubusercontent.com/caronc/apprise-api/master/Screenshot-2.png)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
The following options should allow you to access the API at: `http://localhost:8000/` from your browser.
|
||||||
|
|
||||||
|
Using [dockerhub](https://hub.docker.com/r/caronc/apprise), you can do the following:
|
||||||
|
```bash
|
||||||
|
# Retrieve container
|
||||||
|
docker pull caronc/apprise:latest
|
||||||
|
|
||||||
|
# Start it up:
|
||||||
|
# /config is used for a persistent store, you do not have to mount
|
||||||
|
# this if you don't intend to use it.
|
||||||
|
docker run --name apprise \
|
||||||
|
-p 8000:8000 \
|
||||||
|
-v /var/lib/apprise/config:/config \
|
||||||
|
-d caronc/apprise:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
A `docker-compose.yml` file is already set up to grant you an instant production ready simulated environment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Docker Compose
|
||||||
|
docker-compose up
|
||||||
|
```
|
||||||
|
|
||||||
## API Details
|
## API Details
|
||||||
|
|
||||||
| Path | Description |
|
| Path | Description |
|
||||||
@ -49,17 +74,6 @@ The use of environment variables allow you to provide over-rides to default sett
|
|||||||
| `DEBUG` | This defaults to `False` however can be set to `True`if defined with a non-zero value (such as `1`).
|
| `DEBUG` | This defaults to `False` however can be set to `True`if defined with a non-zero value (such as `1`).
|
||||||
|
|
||||||
|
|
||||||
## Container Support
|
|
||||||
|
|
||||||
A `docker-compose.yml` file is already set up to grant you an instant production ready simulated environment:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Docker Compose
|
|
||||||
docker-compose up
|
|
||||||
```
|
|
||||||
|
|
||||||
You can now access the API at: `http://localhost:8000/` from your browser.
|
|
||||||
|
|
||||||
## Development Environment
|
## Development Environment
|
||||||
|
|
||||||
The following should get you a working development environment to test with:
|
The following should get you a working development environment to test with:
|
||||||
|
5
etc/services.d/gunicorn/finish
Executable file
5
etc/services.d/gunicorn/finish
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
echo >&2 "gunicorn exited. code=${1}"
|
||||||
|
|
||||||
|
# terminate other services to exit from the container
|
||||||
|
exec s6-svscanctl -t /var/run/s6/services
|
3
etc/services.d/gunicorn/run
Executable file
3
etc/services.d/gunicorn/run
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/with-contenv sh
|
||||||
|
echo >&2 "Starting gunicorn"
|
||||||
|
exec gunicorn -c /opt/apprise/webapp/gunicorn.conf.py --worker-tmp-dir /dev/shm core.wsgi
|
5
etc/services.d/nginx/finish
Executable file
5
etc/services.d/nginx/finish
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
echo >&2 "nginx exited. code=${1}"
|
||||||
|
|
||||||
|
# terminate other services to exit from the container
|
||||||
|
exec s6-svscanctl -t /var/run/s6/services
|
3
etc/services.d/nginx/run
Executable file
3
etc/services.d/nginx/run
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/with-contenv sh
|
||||||
|
echo >&2 "Starting nginx"
|
||||||
|
nginx -g 'daemon off;'
|
Loading…
Reference in New Issue
Block a user