From 9aafc9b37c695c73c9df3fe3e963629f3cc1efb7 Mon Sep 17 00:00:00 2001 From: Boyan Date: Sat, 7 Dec 2024 23:12:56 +0100 Subject: [PATCH] Docker --- Dockerfile | 18 ++++++++++++++++++ README.md | 19 +++++++++++++++++-- docker-compose.yml | 13 +++++++++++++ requirements.txt | 7 +++++++ src/manage_users.py | 6 +++++- 5 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9986767 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3.9-slim +RUN apt-get update && apt-get install -y \ + sqlite3 \ + libsqlite3-dev \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app +COPY requirements.txt /app/ +RUN pip install --no-cache-dir -r requirements.txt +COPY src /app/src +COPY src/manage_users.py /app/src/ +RUN python /app/src/manage_users.py init +ENV FLASK_APP=src/app.py +ENV FLASK_RUN_HOST=0.0.0.0 + +EXPOSE 5000 + +CMD ["flask", "run"] diff --git a/README.md b/README.md index 1ac5d50..72ab03c 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ git clone https://git.confest.im/boyan_k/shortn pip install -r requirements.txt ``` -## Usage +## Usage (no docker) ```bash python manage_users.py init # to create the database python manage_users.py add # to add a user @@ -31,9 +31,24 @@ python manage_users.py remove --username # to remove a user python app.py ``` +## Usage (docker) +This will init the database and create a user with the username `admin` and password `admin`. +```bash +docker compose up -d # remove -d for foreground +``` + +### Users +```bash +sudo docker exec -it shortn python src/manage_users.py add +sudo docker exec -it shortn python src/manage_users.py list +sudo docker exec -it shortn python src/manage_users.py remove --username +``` + +> [!NOTE] The database is **ephemeral** and will be lost when the container is removed. That is intentional. + ## TODOs - [x] basic UI (to add links) - [x] basic auth for UI - [x] sqlite3 to store links - [x] responsive? (sorta) -- [ ] dockerize +- [x] dockerize diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5950e7f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +services: + shortn: + build: + context: . + container_name: shortn + ports: + - "5000:5000" + volumes: + - ./src:/app/src + environment: + FLASK_APP: src/app.py + FLASK_RUN_HOST: 0.0.0.0 + command: sh -c "python /app/src/manage_users.py init && flask run" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3fe63a7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +blinker==1.9.0 +click==8.1.7 +Flask==3.1.0 +itsdangerous==2.2.0 +Jinja2==3.1.4 +MarkupSafe==3.0.2 +Werkzeug==3.1.3 diff --git a/src/manage_users.py b/src/manage_users.py index d3c581d..8fa76d4 100644 --- a/src/manage_users.py +++ b/src/manage_users.py @@ -95,4 +95,8 @@ def main(): print("Invalid command. Use --help for usage information.") if __name__ == '__main__': - main() + try: + main() + except KeyboardInterrupt: + sys.exit(1) + \ No newline at end of file