Docker image (#42)
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #42
Reviewed-by: Alexey Skobkin <skobkin-ru@ya.ru>
This commit is contained in:
Miroslavsckaya 2022-08-13 19:41:19 +03:00
parent e0992b2351
commit 3d40035f6b
6 changed files with 120 additions and 3 deletions

17
.dockerignore Normal file
View file

@ -0,0 +1,17 @@
# Python
.venv
__pycache__
# GIT
.gitignore
#CI configuration
.drone.yml
pylama.ini
# Bot documentation
README.md
# Environment
.env
.env.dist

8
.env.dist Normal file
View file

@ -0,0 +1,8 @@
RSSBOT_TG_TOKEN=1234567890:yourbotstoken
# Optional variables
# RSSBOT_DSN=xxx
# POSTGRES_USER=xxx
# POSTGRES_PASSWORD=xxx
# POSTGRES_DB=xxx
# LOG_LEVEL=INFO

4
.gitignore vendored
View file

@ -5,5 +5,5 @@
/.venv /.venv
/__pycache__ /__pycache__
# Database # Environment
/*.db .env

21
Dockerfile Normal file
View file

@ -0,0 +1,21 @@
FROM python:3.10-alpine
WORKDIR /bot
COPY . .
RUN pip install -r requirements.txt
ENV PYTHONUNBUFFERED=1
# App settings
# https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
ENV RSSBOT_DSN=postgres://username:password@hostname/database_name
# https://core.telegram.org/bots#6-botfather
ENV RSSBOT_TG_TOKEN=1234567890:yourbotstoken
# https://docs.python.org/3/howto/logging.html#logging-levels
ENV LOG_LEVEL=INFO
ENTRYPOINT [ "python" ]
CMD [ "bot.py" ]

View file

@ -43,4 +43,43 @@ python bot.py
export RSSBOT_TG_TOKEN=xxx export RSSBOT_TG_TOKEN=xxx
export RSSBOT_DSN=xxx export RSSBOT_DSN=xxx
python update.py python update.py
``` ```
## Running prebuild Docker Image
### Running the bot
```shell
docker run -e RSSBOT_DSN=yyy RSSBOT_TG_TOKEN=xxx miroslavskaya/tg_rss_bot bot.py
```
### Running update
```shell
docker run -e RSSBOT_DSN=yyy RSSBOT_TG_TOKEN=xxx miroslavskaya/tg_rss_bot update.py
```
## Building and running Docker image from source
```shell
docker build . -t tg_rss_bot
```
### Running the bot
```shell
docker run -e RSSBOT_DSN=yyy RSSBOT_TG_TOKEN=xxx tg_rss_bot bot.py
```
### Running update
```shell
docker run -e RSSBOT_DSN=yyy RSSBOT_TG_TOKEN=xxx tg_rss_bot update.py
```
## Using Docker Compose
### Running the bot
```shell
docker-compose up
```
### Running the update
```shell
docker-compose run app update.py
```

32
docker-compose.yml Normal file
View file

@ -0,0 +1,32 @@
version: '3.7'
services:
app:
build: .
image: miroslavsckaya/tg_rss_bot
environment:
# DSN schema: postgres://username:password@hostname/database_name
# https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
- "RSSBOT_DSN=postgres://${BOT_DB_USER:-bot}:${BOT_DB_PASSWORD:-dev}@${BOT_DB_HOST:-db}/${BOT_DB_NAME:-bot}"
# https://core.telegram.org/bots#6-botfather
- "RSSBOT_TG_TOKEN=${RSSBOT_TG_TOKEN}"
# https://docs.python.org/3/howto/logging.html#logging-levels
- "LOG_LEVEL=${LOG_LEVEL:-INFO}"
depends_on:
- postgres
restart: unless-stopped
db:
image: postgres:14-alpine
environment:
# Postgres settings
# https://hub.docker.com/_/postgres
- "POSTGRES_USER=${BOT_DB_USER:-bot}"
- "POSTGRES_PASSWORD=${BOT_DB_PASSWORD:-dev}"
- "POSTGRES_DB=${BOT_DB_NAME:-bot}"
volumes:
- db-data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
db-data: