» »

Flask in cronjobi znotraj Docker containerja

Flask in cronjobi znotraj Docker containerja

i33a ::

Pozdravljeni,
v Docker containerju bi rad pognal Flask app in poleg tega bi rad vsakih nekaj minut izvedel določen ukaz (cronjob).

Trenutno to poskušam narediti takole:

Dockerfile:
FROM python:3.11
RUN apt-get update && apt-get install cron -y

RUN mkdir /app
COPY main.py /app
COPY pyproject.toml /app
WORKDIR /app
ENV PYTHONPATH=${PYTHONPATH}:${PWD}
RUN pip3 install poetry==1.2.0
RUN poetry config virtualenvs.create false
RUN poetry install --only main

COPY entrypoint.sh /app
RUN chmod +x /app/entrypoint.sh
# Copy cronjob file to the cron.d directory
COPY cronjob /etc/cron.d/hello-cron
# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron
# Apply cron job
RUN crontab /etc/cron.d/hello-cron
# Create the log file to be able to run tail
RUN touch /var/log/cron.log

EXPOSE 5000
# Run the command on container startup
CMD ["sh", "/app/entrypoint.sh"]


entrypoint.sh
#!/bin/sh

echo "Executing entrypoint..."
export FLASK_APP=main.py
echo $FLASK_APP
echo "Starting cronjobs..."
cron
echo "Running Flask app..."
flask run --host 0.0.0.0 --port 5000


cronjob
* * * * * cd /app && /usr/local/bin/flask mycronjob >> /var/log/cron.log 2>&1



Kot napako pa dodim naslednje (v /var/log/cron.log):
Error: Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory.
Usage: flask [OPTIONS] COMMAND [ARGS]...
Try 'flask --help' for help.
Error: No such command mycronjob



Mogoče kdo ve kaj moram spemeniti / ima kak nasvet?

Invictus ::

Na prvi pogled nimaš instaliranega flaska, ne mycronjob.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

HotBurek ::

Jst grem stavit 98 centof, da se problem začne v fajlu entrypoint.sh, sledeč ukaz:
export FLASK_APP=main.py

Vrednost bo potrebno shranit, kot se za pravega moškega spodobi. Se pravi, bolj na-trdo.

In ena od opcij je, da to vrednost trdno (premanentno) shraniš v sledeč file:
/etc/environment

Nadalje, če ta trdota ne pomaga, naprej na Plan B.

Uporabi full path, se pravi:
/full/path/to/main.py
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Rešeno] crontab job looper v Pythonu - neki mi ne gre...

Oddelek: Programiranje
7743 (380) HotBurek
»

Arhiviranje serverja s TAR - incremental in FTP na drugo lokacijo in email report - S

Oddelek: Operacijski sistemi
61575 (1486) Daedalus
»

Crontab in skripta v 8.04.2; kako?

Oddelek: Operacijski sistemi
91317 (1112) BigWhale
»

Vdor v ClarkConnect?

Oddelek: Operacijski sistemi
51987 (1799) Nerdor
»

File limit v linux-u

Oddelek: Operacijski sistemi
5853 (793) BigWhale

Več podobnih tem