dodo.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import subprocess
  2. from doit.tools import LongRunning
  3. from dodo_utils import wait_net_service, up2date_anyimages
  4. COMPOSE = 'docker-compose -p feedati'
  5. def task_build():
  6. '''builda il container docker'''
  7. return {
  8. 'uptodate': [up2date_anyimages],
  9. 'file_dep': ['docker-compose.yml', 'docker/Dockerfile-tt-rss'],
  10. 'actions': [COMPOSE + ' build'],
  11. 'clean': [remove_build],
  12. }
  13. def remove_build():
  14. cmd = "docker container ls -a --format '{{.ID}}\t{{.Names}}'|" \
  15. "awk '$2 ~ /feedati_/ { print $$1 }' | " \
  16. "xargs -r docker container rm",
  17. subprocess.check_call(cmd, shell=True)
  18. def task_build_rm():
  19. '''rimuove container avviati'''
  20. return {'actions': [remove_build]}
  21. def task_build_rmi():
  22. '''rimuove immagini ottenute con build'''
  23. return {
  24. 'actions': [
  25. r"docker images |"
  26. "awk '$1 ~ /^feedati\// { print $3 }' | xargs -r "
  27. "docker rmi",
  28. ]
  29. }
  30. def task_dump_rm():
  31. '''rimuove il dump caricato sul db'''
  32. return {
  33. 'actions': [
  34. "docker container ls -a --format '{{.ID}}\t{{.Names}}'|"
  35. "awk '$2 ~ /^feedati_db { print $$1 }' | "
  36. "xargs -r docker container rm",
  37. "docker volume rm feedati_postgres_data || true",
  38. ]
  39. }
  40. def task_dump_load():
  41. '''applica il dump sql al container del db'''
  42. return {
  43. 'task_dep': ['dump_rm', 'build'],
  44. 'file_dep': ['docker/ttrss.sql'],
  45. 'actions': [
  46. (COMPOSE + ' up -d db').split(),
  47. r'docker cp ./docker/ttrss.sql '
  48. '$(docker ps -qf name=feedati_db):/tmp/ttrss.sql',
  49. (wait_net_service, ['localhost', 5432, 300]),
  50. r'docker exec -t $(docker ps -qf name=feedati_db) '
  51. 'su -c "psql -d ttrss < /tmp/ttrss.sql" postgres',
  52. 'docker exec -t $(docker ps -qf name=feedati_db) '
  53. 'rm -f /tmp/ttrss.sql',
  54. COMPOSE + ' stop',
  55. ]
  56. }
  57. def task_fix_perms():
  58. '''fix permissions for shared www dir'''
  59. return {
  60. 'actions': [
  61. 'chmod -R 777 tt-rss/feed-icons/ tt-rss/cache/ tt-rss/lock/'
  62. .split()
  63. ]
  64. }
  65. def task_up():
  66. return {
  67. 'task_dep': ['build', 'dump_load', 'fix_perms'],
  68. 'actions': [LongRunning(
  69. (COMPOSE + ' up'),
  70. shell=True)
  71. ]
  72. }
  73. def task_cleanall():
  74. '''clean everything there is to clean'''
  75. return {
  76. 'task_dep': ['build_rm', 'build_rmi', 'dump_rm'],
  77. 'actions': None
  78. }