mirror of
https://github.com/EDeev/school_menu.git
synced 2026-10-07 20:49:36 +03:00
Docker-образ бота (Python 3.10, базы в томе) и релизы по тегу v*
This commit is contained in:
parent
6bb94afe64
commit
1cf669831f
6 changed files with 64 additions and 0 deletions
4
.dockerignore
Normal file
4
.dockerignore
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
.git
|
||||||
|
.github
|
||||||
|
*.md
|
||||||
|
**/__pycache__
|
||||||
35
.github/workflows/docker.yml
vendored
Normal file
35
.github/workflows/docker.yml
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
name: Docker
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags: ["v*"]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: docker/setup-buildx-action@v3
|
||||||
|
- uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ghcr.io/edeev/school_menu
|
||||||
|
tags: |
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
type=raw,value=latest
|
||||||
|
- uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
13
Dockerfile
Normal file
13
Dockerfile
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Школьный Telegram-бот столовой (aiogram 2). pymorphy2 0.9 не работает на Python 3.11+
|
||||||
|
FROM python:3.10-slim
|
||||||
|
ENV PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
|
||||||
|
WORKDIR /app
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
COPY code code
|
||||||
|
# базы из репозитория — в том /app/db при первом запуске
|
||||||
|
COPY db /opt/db-seed
|
||||||
|
COPY docker/entrypoint.sh /entrypoint.sh
|
||||||
|
VOLUME ["/app/db"]
|
||||||
|
WORKDIR /app/code
|
||||||
|
ENTRYPOINT ["sh", "/entrypoint.sh"]
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
[Русский](README.md) · **English**
|
[Русский](README.md) · **English**
|
||||||
|
|
||||||
[](https://github.com/EDeev/school_menu/actions/workflows/ci.yml)
|
[](https://github.com/EDeev/school_menu/actions/workflows/ci.yml)
|
||||||
|
[](https://github.com/EDeev/school_menu/releases)
|
||||||
|
|
||||||
A school cafeteria Telegram bot: every morning it posts the menu from the school website, takes breakfast,
|
A school cafeteria Telegram bot: every morning it posts the menu from the school website, takes breakfast,
|
||||||
lunch and snack orders by class and compiles a summary for the cafeteria.
|
lunch and snack orders by class and compiles a summary for the cafeteria.
|
||||||
|
|
@ -25,6 +26,9 @@ cd code && BOT_TOKEN=token BOT_ID=bot_id TECH_GROUP_ID=group_id python bot.py
|
||||||
|
|
||||||
Portion weights and calories from Excel are parsed without `eval`: only numbers and `+ - * /` are allowed.
|
Portion weights and calories from Excel are parsed without `eval`: only numbers and `+ - * /` are allowed.
|
||||||
|
|
||||||
|
**Docker:** `docker run -d -e BOT_TOKEN=token -e BOT_ID=bot_id -e TECH_GROUP_ID=group_id -v school-menu-db:/app/db ghcr.io/edeev/school_menu`
|
||||||
|
(same as `git.deev.su/edeev/school_menu`); on first start the databases from the repository are copied into the volume.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
School project (2021–2022). The code is open for study; there is no separate license.
|
School project (2021–2022). The code is open for study; there is no separate license.
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
**Русский** · [English](README.en.md)
|
**Русский** · [English](README.en.md)
|
||||||
|
|
||||||
[](https://github.com/EDeev/school_menu/actions/workflows/ci.yml)
|
[](https://github.com/EDeev/school_menu/actions/workflows/ci.yml)
|
||||||
|
[](https://github.com/EDeev/school_menu/releases)
|
||||||
|
|
||||||
Telegram-бот школьной столовой: каждое утро присылает меню с сайта школы, принимает заказы завтраков,
|
Telegram-бот школьной столовой: каждое утро присылает меню с сайта школы, принимает заказы завтраков,
|
||||||
обедов и полдников по классам и собирает сводку для столовой.
|
обедов и полдников по классам и собирает сводку для столовой.
|
||||||
|
|
@ -25,6 +26,9 @@ cd code && BOT_TOKEN=токен BOT_ID=id_бота TECH_GROUP_ID=id_группы
|
||||||
|
|
||||||
Граммовка и калорийность из Excel разбираются без `eval`: допускаются только числа и `+ - * /`.
|
Граммовка и калорийность из Excel разбираются без `eval`: допускаются только числа и `+ - * /`.
|
||||||
|
|
||||||
|
**Docker:** `docker run -d -e BOT_TOKEN=токен -e BOT_ID=id_бота -e TECH_GROUP_ID=id_группы -v school-menu-db:/app/db ghcr.io/edeev/school_menu`
|
||||||
|
(то же — `git.deev.su/edeev/school_menu`); при первом запуске в том копируются базы из репозитория.
|
||||||
|
|
||||||
## Лицензия
|
## Лицензия
|
||||||
|
|
||||||
Школьный проект (2021–2022). Код открыт для изучения, отдельной лицензии нет.
|
Школьный проект (2021–2022). Код открыт для изучения, отдельной лицензии нет.
|
||||||
|
|
|
||||||
4
docker/entrypoint.sh
Normal file
4
docker/entrypoint.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# BOT_TOKEN, BOT_ID, TECH_GROUP_ID — из окружения
|
||||||
|
cp -n /opt/db-seed/* /app/db/ 2>/dev/null || true
|
||||||
|
exec python bot.py
|
||||||
Loading…
Add table
Reference in a new issue