|
|
@ -1,6 +1,34 @@ |
|
|
|
# py-push-server |
|
|
|
|
|
|
|
## Docker Compose Setup |
|
|
|
## Docker Build & Deploy |
|
|
|
|
|
|
|
``` |
|
|
|
export PUSH_SERVER_VERSION=0.1 |
|
|
|
|
|
|
|
# This command is also in build.sh |
|
|
|
docker build --tag py-push-server:amd-$PUSH_SERVER_VERSION --platform linux/amd64 . |
|
|
|
|
|
|
|
docker save -o ~/dl/py-push-server-amd-$PUSH_SERVER_VERSION.tar py-push-server:amd-$PUSH_SERVER_VERSION |
|
|
|
|
|
|
|
bzip2 ~/dl/py-push-server-amd-$PUSH_SERVER_VERSION.tar |
|
|
|
``` |
|
|
|
|
|
|
|
... and then on the server after transferring that file: |
|
|
|
|
|
|
|
``` |
|
|
|
export PUSH_SERVER_VERSION=0.1 |
|
|
|
|
|
|
|
bzip2 -d py-push-server-amd-$PUSH_SERVER_VERSION.tar.bz2 |
|
|
|
|
|
|
|
sudo docker load -i py-push-server-amd-$PUSH_SERVER_VERSION.tar |
|
|
|
|
|
|
|
sudo docker run -d -p 8900:3000 -v ~/py-push-server-db:/srv/py-push-server/data --name py-push-server-$PUSH_SERVER_VERSION py-push-server:amd-$PUSH_SERVER_VERSION |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Docker Compose & HAProxy Setup |
|
|
|
|
|
|
|
|
|
|
|
On first run you need to: |
|
|
@ -8,7 +36,7 @@ On first run you need to: |
|
|
|
`docker network create phoenix-network` |
|
|
|
|
|
|
|
|
|
|
|
## HAProxy setup |
|
|
|
### HAProxy setup |
|
|
|
|
|
|
|
... in docker-compose.yml ... |
|
|
|
|
|
|
@ -181,7 +209,7 @@ NOTE: `timesafari-pwa.anomalistlabs.com` PWA sits on the root |
|
|
|
timesafari-pwa.anomalistlabs.com/web-push/ web_push_backend |
|
|
|
``` |
|
|
|
|
|
|
|
## The rest .. |
|
|
|
### The rest .. |
|
|
|
|
|
|
|
`docker-compose up -d` should just work :-) |
|
|
|
|
|
|
@ -192,11 +220,6 @@ timesafari-pwa.anomalistlabs.com/web-push/ web_push_backend |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Run the server outside Docker |
|
|
|
|
|
|
|
Run the app: |
|
|
@ -204,9 +227,13 @@ Run the app: |
|
|
|
```commandline |
|
|
|
sh <(curl https://pkgx.sh) +python.org +virtualenv.pypa.io sh |
|
|
|
|
|
|
|
pip install gunicorn |
|
|
|
|
|
|
|
source venv/bin/activate |
|
|
|
|
|
|
|
python app.py |
|
|
|
gunicorn -b 0.0.0.0:3000 --log-level=debug --workers=3 app:app |
|
|
|
|
|
|
|
# ... and see the results in a browser: http://localhost:3000/web-push/vapid |
|
|
|
|
|
|
|
# See Troubleshooting below if that doesn't work out of the box. |
|
|
|
``` |
|
|
@ -233,6 +260,9 @@ Run haproxy (on a Mac): |
|
|
|
|
|
|
|
Troubleshooting |
|
|
|
|
|
|
|
* If you get "unable to open database file", you can edit the app.py line with |
|
|
|
SQLALCHEMY_DATABASE_URI and add `sqlite:////...` with the full path to the data/webpush.db file. |
|
|
|
* If you get "no such table: vapid_key" then your file pointers are probably wrong. |
|
|
|
Check that the "docker run" mounted volume matches the SQLALCHEMY_DATABASE_URI in the app.py file. |
|
|
|
|
|
|
|
* If you get "unable to open database file", you can provide the app.py with |
|
|
|
SQLALCHEMY_DATABASE_URI with `sqlite:////...` with the full path to the data/webpush.db file. |
|
|
|
(Why does the relative path of `sqlite:///...` not work for a relative path?) |
|
|
|