Add Docker support

This commit is contained in:
vlnst 2024-06-17 18:40:34 +03:00
parent 923854c322
commit 2ca209042e
Signed by: vlnst
GPG key ID: 601563C5C998579A
5 changed files with 63 additions and 5 deletions

3
.env.example Normal file
View file

@ -0,0 +1,3 @@
PORT=8002
UWSGI_PROCESSES=4
UWSGI_THREADS=4

12
.gitignore vendored
View file

@ -1,7 +1,9 @@
venv/
*.pyc
__pycache__/
.env
.vscode
privacy.txt
__pycache__/
dist/
docker-compose.yml
privacy.md
/dist/
privacy.txt
*.pyc
venv/

17
Dockerfile Normal file
View file

@ -0,0 +1,17 @@
FROM alpine:3.20
ENV APP_ENV=/opt/venv
ENV PATH="${APP_ENV}/bin:$PATH"
RUN apk add --no-cache py3-pip uwsgi-python3 && \
python3 -m venv $APP_ENV && \
$APP_ENV/bin/pip install --no-cache-dir pip structables && \
adduser -S -D -H structables
COPY entrypoint.sh /entrypoint.sh
EXPOSE 8002
USER structables
ENTRYPOINT ["/entrypoint.sh"]

View file

@ -0,0 +1,18 @@
services:
structables:
container_name: structables
restart: unless-stopped
build: .
ports:
- "127.0.0.1:8002:8002"
env_file: .env
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
read_only: true
deploy:
resources:
limits:
cpus: '0.5'
memory: 300M

18
entrypoint.sh Executable file
View file

@ -0,0 +1,18 @@
#!/bin/sh
args="--plugin python3 \
--http-socket 0.0.0.0:$PORT \
--master \
--module structables.main:app \
-H /opt/venv"
if [ "$UWSGI_PROCESSES" ]
then
args="$args --processes $UWSGI_PROCESSES"
fi
if [ "$UWSGI_THREADS" ]
then
args="$args --threads $UWSGI_THREADS"
fi
exec /usr/sbin/uwsgi $args