diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ad62589 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,153 @@ +# Created by .ignore support plugin (hsz.mobi) +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# 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/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +#*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +**/*.env +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# Diagrams +diagrams/ + +# nixpkgs +flake.nix +flake.lock + +# README +*.md + +**/archives \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..887446e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +# app/Dockerfile + +# pull the official docker image +FROM python:3.10-alpine as base + +# set env variables +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 +ENV PIP_DISABLE_PIP_VERSION_CHECK=on + +# install dependences +COPY requirements.txt ./ +RUN pip install --no-cache-dir --root-user-action=ignore -r requirements.txt + +# Now multistage builds +FROM python:3.10-alpine + +COPY --from=base /usr/local/lib/python3.10/site-packages/ /usr/local/lib/python3.10/site-packages/ +COPY --from=base /usr/local/bin/ /usr/local/bin/ + +# set lables about app +LABEL maintainer="s.zhukovskii@ispsystem.com" +LABEL ru.isptech.logs-collector.version=v0.1.0 + +COPY ./logs_collector /app +WORKDIR /app + +COPY entrypoint.sh ./ + +ENTRYPOINT [ "sh", "entrypoint.sh" ] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..8e9a782 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,16 @@ +version: "3.7" + +services: + logs_collector: + container_name: logs_collector + build: + context: . + expose: + - 8000 + ports: + - "8000:8000" + volumes: + - ./logs_collector/db.sqlite3:/app/db.sqlite3 + - ./logs_collector/archives:/app/archives + env_file: + - ./logs_collector/.env diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..af4255e --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +python manage.py migrate --no-input +python manage.py collectstatic --no-input + +gunicorn logs_collector.wsgi:application --bind 0.0.0.0:8000