Docker image #42
17
.dockerignore
Normal file
17
.dockerignore
Normal 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
8
.env.dist
Normal 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
4
.gitignore
vendored
|
@ -5,5 +5,5 @@
|
||||||
/.venv
|
/.venv
|
||||||
/__pycache__
|
/__pycache__
|
||||||
|
|
||||||
# Database
|
# Environment
|
||||||
skobkin marked this conversation as resolved
|
|||||||
/*.db
|
.env
|
||||||
|
|
21
Dockerfile
Normal file
21
Dockerfile
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
FROM python:3.10-alpine
|
||||||
|
|
||||||
|
WORKDIR /bot
|
||||||
|
|
||||||
|
COPY . .
|
||||||
skobkin marked this conversation as resolved
skobkin
commented
You can probably copy only Python files and You can use This file will tell You can probably copy only Python files and `requirements.txt`. We don't need anything else in the image to run the app.
You can use `.dockerignore` file to acomplish that. Check [this documentation](https://docs.docker.com/engine/reference/builder/#dockerignore-file) and [my example](https://git.skobk.in/skobkin/magnetico-web/src/branch/master/.dockerignore).
This file will tell `ADD`/`COPY` to ignore some files you don't want to see in the image.
|
|||||||
|
|
||||||
|
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" ]
|
41
README.md
41
README.md
|
@ -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
32
docker-compose.yml
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
version: '3.7'
|
||||||
skobkin marked this conversation as resolved
skobkin
commented
I just understood that I think it's a good idea to fix that. I just understood that `README.md` has no documentation about running the bot in Docker yet.
I think it's a good idea to fix that.
|
|||||||
|
|
||||||
|
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:
|
||||||
skobkin marked this conversation as resolved
skobkin
commented
`db-data` maybe?
|
|||||||
|
db-data:
|
Loading…
Reference in a new issue
Missing EOL (
\n
) on the last line