Configuration on Fly.io
How to get Wooey up and running on fly.io. This assumes the wooify command was run with app as the project’s name and the fly.io project is named wooey-test.
Directory Layout
app
├── app
│ ├── application files
├── manage.py # this is unused and can be removed if running via django-admin
├── fly.toml
├── Dockerfile
├── requirements.txt
Fly TOML file
Here is an example fly.toml file. One arbitary choice is the webserver used. Here, waitress is used but there are many alternatives such as gunicorn and uwsgi.
app = "wooey-test"
kill_signal = "SIGINT"
kill_timeout = 5
[env]
DJANGO_SETTINGS_MODULE = "app.settings"
[experimental]
allowed_public_ports = []
auto_rollback = true
[build]
dockerfile = "Dockerfile"
[deploy]
release_command = "django-admin migrate"
[processes]
web = "waitress-serve --connection-limit 2000 --channel-timeout=300 --port=8080 app.wsgi:application"
worker = "celery -A app worker -c 1 --beat -l info --without-gossip --without-mingle --without-heartbeat"
[[services]]
http_checks = []
internal_port = 8080
processes = ["web"]
protocol = "tcp"
script_checks = []
[services.concurrency]
hard_limit = 25
soft_limit = 20
type = "connections"
[[services.ports]]
force_https = true
handlers = ["http"]
port = 80
[[services.ports]]
handlers = ["tls", "http"]
port = 443
[[services.tcp_checks]]
grace_period = "1s"
interval = "15s"
restart_limit = 0
timeout = "2s"
Dockerfile
Here is an example Dockerfile
FROM python:3.10.9-slim-buster
ENV VIRTUAL_ENV=/opt/venv
RUN useradd -u 1000 wooey
RUN mkdir -p $VIRTUAL_ENV && chown wooey:wooey $VIRTUAL_ENV
USER wooey
RUN python3 -m venv --system-site-packages $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
COPY --chown=wooey:wooey requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY --chown=wooey:wooey app app
ENV PYTHONPATH="/app:$PYTHONPATH"
Requirements
Here is an example requirements.txt
Django~=3.2.14
wooey==0.13.2
django-storages==1.13.2
django-autoslug==1.9.8
dj-database-url==1.0.0
boto3==1.26.27
waitress==2.1.2
collectfast==2.2.0
psycopg2-binary==2.9.5