mirror of
https://github.com/agresdominik/predictify.git
synced 2026-04-21 17:55:49 +00:00
Create improved Dockerfile with volume mounts for storing data
* Add volume mounts to Dockerfile to enable persisten storing of database and tokens when using docker * Makefile helps with cleanup and building the Dockerfile * Startup fires the predictify runtime inside the container * `.dockerignore` contains files that are not needed by the docker, e.g. files that would otherwise slow build process down
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
logs/
|
||||||
|
data/
|
||||||
|
src/__pycache__/
|
||||||
|
.git
|
||||||
|
*.md
|
||||||
|
.venv
|
||||||
|
LICENSE
|
||||||
|
MAKEFILE
|
||||||
|
pytest.ini
|
||||||
|
test/
|
||||||
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
.PHONY: all dockerfile clean
|
||||||
|
|
||||||
|
TAG="unstable"
|
||||||
|
PROJ_NAME="predictify"
|
||||||
|
|
||||||
|
all: install dockerfile
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p ./data
|
||||||
|
|
||||||
|
dockerfile: ./docker/Dockerfile
|
||||||
|
docker build \
|
||||||
|
--tag "$(PROJ_NAME):$(TAG)" \
|
||||||
|
--build-arg PROJ_NAME=$(PROJ_NAME) \
|
||||||
|
--file ./docker/Dockerfile \
|
||||||
|
.
|
||||||
|
|
||||||
|
clean: ./spotify_scraped.db
|
||||||
|
rm -r ./data/spotify_scraped.db
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
FROM alpine:3.21.3
|
||||||
|
|
||||||
|
# Set environment variables
|
||||||
|
ARG PROJ_NAME
|
||||||
|
ENV PROJ_NAME=${PROJ_NAME}
|
||||||
|
|
||||||
|
RUN mkdir -p /app/${PROJ_NAME}
|
||||||
|
|
||||||
|
# The following steps are executed from the specified directory below
|
||||||
|
WORKDIR /app/${PROJ_NAME}
|
||||||
|
|
||||||
|
# Install all necessary software
|
||||||
|
RUN apk add --no-cache python3 sqlite
|
||||||
|
|
||||||
|
# Create the directories, needed for persistent storage (e.g. database, tokens)
|
||||||
|
RUN mkdir ./data ./src ./config
|
||||||
|
|
||||||
|
# Create mount points for logs, data, src and config
|
||||||
|
VOLUME /var/log ./data ./src ./config
|
||||||
|
|
||||||
|
# Copy the application source code
|
||||||
|
COPY ./src/ ./src/
|
||||||
|
|
||||||
|
# Create a seperate venv inside the container & install requirements
|
||||||
|
COPY ./requirements.txt ./requirements.txt
|
||||||
|
RUN \
|
||||||
|
python -m venv .venv && \
|
||||||
|
source .venv/bin/activate && \
|
||||||
|
./.venv/bin/pip install -r ./requirements.txt && \
|
||||||
|
deactivate
|
||||||
|
|
||||||
|
COPY ./docker/startup.sh ./startup.sh
|
||||||
|
|
||||||
|
# When starting the contianer the following is executed
|
||||||
|
ENTRYPOINT ["./startup.sh"]
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Startup predictify. Don't use this. This is for docker specifically.
|
||||||
|
source .venv/bin/activate
|
||||||
|
.venv/bin/python src/runtime.py
|
||||||
Reference in New Issue
Block a user