From 8f53233d280f1e49200e86321fdfbd6dbf8c6ed9 Mon Sep 17 00:00:00 2001 From: Alivecow Date: Mon, 24 Feb 2025 22:55:04 +0100 Subject: [PATCH 1/7] feat: Add Dockerfile for development environment Refs: OPS-10 --- Dockerfile-DEV | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Dockerfile-DEV diff --git a/Dockerfile-DEV b/Dockerfile-DEV new file mode 100644 index 0000000..a305520 --- /dev/null +++ b/Dockerfile-DEV @@ -0,0 +1,22 @@ +# syntax=docker/dockerfile:1 + +FROM python:3.12-alpine + +# VENV not needed in docker container +ENV POETRY_VIRTUALENVS_CREATE=false + +WORKDIR /app + +COPY . . + +# Install dependencies +RUN pip install poetry +RUN poetry install + +# Expose development port +EXPOSE 5000 + +# Include host flag to make flask listen on all interfaces +# Otherwise it is not accessible from the outside. +CMD [ "flask", "--app", "senju/main", "run", "--debug", "--host=0.0.0.0"] + From f8d07c4bb8f8d0114c42888eeab7955294637397 Mon Sep 17 00:00:00 2001 From: Alivecow Date: Tue, 25 Feb 2025 09:16:49 +0100 Subject: [PATCH 2/7] refactor: Renaming Dockerfile and changing structure Refs: OPS-10 The Dockerfile is renamed to the canonical name and not contains multiple stages to eventually support dev and pod builds --- Dockerfile-DEV => Dockerfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) rename Dockerfile-DEV => Dockerfile (86%) diff --git a/Dockerfile-DEV b/Dockerfile similarity index 86% rename from Dockerfile-DEV rename to Dockerfile index a305520..a3b1136 100644 --- a/Dockerfile-DEV +++ b/Dockerfile @@ -1,18 +1,19 @@ -# syntax=docker/dockerfile:1 - -FROM python:3.12-alpine +FROM python:3.12-alpine AS base # VENV not needed in docker container ENV POETRY_VIRTUALENVS_CREATE=false WORKDIR /app -COPY . . +COPY . . # Install dependencies RUN pip install poetry RUN poetry install + +FROM base as dev + # Expose development port EXPOSE 5000 From c2d6cd822a0bc729954b1d486be993090936724e Mon Sep 17 00:00:00 2001 From: Alivecow Date: Tue, 25 Feb 2025 09:17:12 +0100 Subject: [PATCH 3/7] feat: Add docker-compose.yml Refs: OPS-10 --- docker-compose.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a02c168 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +services: + senju: + build: + build: . + target: dev + ports: + - "127.0.0.1:5000:5000" + volumes: + - .:/app + From c72ee2617ed6725ad0b373f4c15b848ef6307bac Mon Sep 17 00:00:00 2001 From: Alivecow Date: Tue, 25 Feb 2025 15:51:14 +0100 Subject: [PATCH 4/7] feat: Create ollama container and pull initial image. Refs: OPS-17, OPS-12, OPS,10 --- .gitignore | 3 +++ Dockerfile | 10 +++++----- docker-compose.yml | 14 +++++++++++++- entrypoint.sh | 6 ++++++ 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 entrypoint.sh diff --git a/.gitignore b/.gitignore index 545c490..a1db2f1 100644 --- a/.gitignore +++ b/.gitignore @@ -171,3 +171,6 @@ cython_debug/ .pypirc .python-version pyrightconfig.json + +# Ollama Local Dir +ollama diff --git a/Dockerfile b/Dockerfile index a3b1136..2dba618 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,21 +3,21 @@ FROM python:3.12-alpine AS base # VENV not needed in docker container ENV POETRY_VIRTUALENVS_CREATE=false +COPY ./entrypoint.sh / + WORKDIR /app COPY . . # Install dependencies +RUN apk add curl RUN pip install poetry RUN poetry install - FROM base as dev # Expose development port EXPOSE 5000 -# Include host flag to make flask listen on all interfaces -# Otherwise it is not accessible from the outside. -CMD [ "flask", "--app", "senju/main", "run", "--debug", "--host=0.0.0.0"] - +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index a02c168..ad97378 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,22 @@ services: senju: build: - build: . + context: . target: dev ports: - "127.0.0.1:5000:5000" volumes: - .:/app + depends_on: + - ollama + + ollama: + image: docker.io/ollama/ollama + volumes: + - ./ollama:/root/.ollama + container_name: ollama + environment: + - OLLAMA_KEEP_ALIVE=24h + - OLLAMA_HOST=0.0.0.0 + diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..ea3ed14 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +curl http://ollama:11434/api/pull -d '{"model": "llama3.2:1b"}' + +flask --app senju/main run --debug --host=0.0.0.0 + From 783eea121c6a295625d59cff7f9a3b5dae7e26d9 Mon Sep 17 00:00:00 2001 From: Alivecow Date: Wed, 26 Feb 2025 20:24:17 +0100 Subject: [PATCH 5/7] feat: Add dockerignore Refs: OPS-10 --- .dockerignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2d2ecd6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +.git/ From 42e53703e85461e3a1076d7cbeb64980566869c4 Mon Sep 17 00:00:00 2001 From: Alivecow Date: Wed, 26 Feb 2025 20:32:45 +0100 Subject: [PATCH 6/7] refactor: Change volume mount to avoid unneded files Refs: OPS-10 --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index ad97378..a93d2f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,7 +6,7 @@ services: ports: - "127.0.0.1:5000:5000" volumes: - - .:/app + - ./senju:/app depends_on: - ollama From 3825b639ec5fbc87e0df7aa8cb7e3b7234645172 Mon Sep 17 00:00:00 2001 From: Alivecow Date: Wed, 26 Feb 2025 20:39:48 +0100 Subject: [PATCH 7/7] refactor: Add template for dockerignore Refs: OPS-10 --- .dockerignore | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 2d2ecd6..1513c39 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,94 @@ -.git/ +# Git +.git +.gitignore + +# CI +.codeclimate.yml +.travis.yml +.taskcluster.yml + +# Docker +docker-compose.yml +.docker +Dockerfile + +# Byte-compiled / optimized / DLL files +__pycache__/ +*/__pycache__/ +*/*/__pycache__/ +*/*/*/__pycache__/ +*.py[cod] +*/*.py[cod] +*/*/*.py[cod] +*/*/*/*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.cache +nosetests.xml +coverage.xml + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Virtual environment +.env/ +.venv/ +venv/ + +# PyCharm +.idea + +# Python mode for VIM +.ropeproject +*/.ropeproject +*/*/.ropeproject +*/*/*/.ropeproject + +# Vim swap files +*.swp +*/*.swp +*/*/*.swp +*/*/*/*.swp