123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import subprocess
- from doit.tools import LongRunning
- from dodo_utils import wait_net_service, up2date_anyimages
- COMPOSE = 'docker-compose -p feedati'
- def task_build():
- '''builda il container docker'''
- return {
- 'uptodate': [up2date_anyimages],
- 'file_dep': ['docker-compose.yml', 'docker/Dockerfile-tt-rss'],
- 'actions': [COMPOSE + ' build'],
- 'clean': [remove_build],
- }
- def remove_build():
- cmd = "docker container ls -a --format '{{.ID}}\t{{.Names}}'|" \
- "awk '$2 ~ /feedati_/ { print $$1 }' | " \
- "xargs -r docker container rm",
- subprocess.check_call(cmd, shell=True)
- def task_build_rm():
- '''rimuove container avviati'''
- return {'actions': [remove_build]}
- def task_build_rmi():
- '''rimuove immagini ottenute con build'''
- return {
- 'actions': [
- r"docker images |"
- "awk '$1 ~ /^feedati\// { print $3 }' | xargs -r "
- "docker rmi",
- ]
- }
- def task_dump_rm():
- '''rimuove il dump caricato sul db'''
- return {
- 'actions': [
- "docker container ls -a --format '{{.ID}}\t{{.Names}}'|"
- "awk '$2 ~ /^feedati_db { print $$1 }' | "
- "xargs -r docker container rm",
- "docker volume rm feedati_postgres_data || true",
- ]
- }
- def task_dump_load():
- '''applica il dump sql al container del db'''
- return {
- 'task_dep': ['dump_rm', 'build'],
- 'file_dep': ['docker/ttrss.sql'],
- 'actions': [
- (COMPOSE + ' up -d db').split(),
- r'docker cp ./docker/ttrss.sql '
- '$(docker ps -qf name=feedati_db):/tmp/ttrss.sql',
- (wait_net_service, ['localhost', 5432, 300]),
- r'docker exec -t $(docker ps -qf name=feedati_db) '
- 'su -c "psql -d ttrss < /tmp/ttrss.sql" postgres',
- 'docker exec -t $(docker ps -qf name=feedati_db) '
- 'rm -f /tmp/ttrss.sql',
- COMPOSE + ' stop',
- ]
- }
- def task_fix_perms():
- '''fix permissions for shared www dir'''
- return {
- 'actions': [
- 'chmod -R 777 tt-rss/feed-icons/ tt-rss/cache/ tt-rss/lock/'
- .split()
- ]
- }
- def task_up():
- return {
- 'task_dep': ['build', 'dump_load', 'fix_perms'],
- 'actions': [LongRunning(
- (COMPOSE + ' up'),
- shell=True)
- ]
- }
- def task_cleanall():
- '''clean everything there is to clean'''
- return {
- 'task_dep': ['build_rm', 'build_rmi', 'dump_rm'],
- 'actions': None
- }
|