containers.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. mastodon_service_dockerbunker() {
  2. docker run -d --user mastodon \
  3. --name=${FUNCNAME[0]//_/-} \
  4. --restart=always \
  5. --health-cmd="wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:3000/api/v1/instance || exit 1" \
  6. --health-interval=30s \
  7. --network dockerbunker-${SERVICE_NAME} --net-alias mastodon \
  8. --env RUN_DB_MIGRATIONS=true --env UID=991 --env GID=991 --env WEB_CONCURRENCY=16 --env MAX_THREADS=20 --env SIDEKIQ_WORKERS=25 \
  9. --env-file "${SERVICE_ENV}" \
  10. -v ${SERVICE_NAME}-data-vol-1:${volumes[${SERVICE_NAME}-data-vol-1]} \
  11. -v ${SERVICE_NAME}-data-vol-2:${volumes[${SERVICE_NAME}-data-vol-2]} \
  12. -v ${SERVICE_NAME}-data-vol-3:${volumes[${SERVICE_NAME}-data-vol-3]} \
  13. ${IMAGES[service]} bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000 -b '0.0.0.0'" >/dev/null
  14. }
  15. mastodon_streaming_dockerbunker() {
  16. docker run -d --user mastodon \
  17. --name=${FUNCNAME[0]//_/-} \
  18. --restart=always \
  19. --health-cmd="wget -q --spider --header 'x-forwarded-proto: https' --proxy=off localhost:4000/api/v1/streaming/health || exit 1" \
  20. --health-interval=30s \
  21. --network dockerbunker-${SERVICE_NAME} --net-alias streaming \
  22. --env RUN_DB_MIGRATIONS=true --env UID=991 --env GID=991 --env WEB_CONCURRENCY=16 --env MAX_THREADS=20 --env SIDEKIQ_WORKERS=25 \
  23. --env-file "${SERVICE_ENV}" \
  24. ${IMAGES[service]} yarn start >/dev/null
  25. }
  26. mastodon_sidekiq_dockerbunker() {
  27. docker run -d --user mastodon \
  28. --name=${FUNCNAME[0]//_/-} \
  29. --restart=always \
  30. --network dockerbunker-${SERVICE_NAME} --net-alias=sidekiq \
  31. --env RUN_DB_MIGRATIONS=true --env UID=991 --env GID=991 --env WEB_CONCURRENCY=16 --env MAX_THREADS=20 --env SIDEKIQ_WORKERS=25 \
  32. --env-file "${SERVICE_ENV}" \
  33. -v ${SERVICE_NAME}-data-vol-1:${volumes[${SERVICE_NAME}-data-vol-1]} \
  34. -v ${SERVICE_NAME}-data-vol-2:${volumes[${SERVICE_NAME}-data-vol-2]} \
  35. ${IMAGES[service]} bundle exec sidekiq >/dev/null
  36. }
  37. mastodon_redis_dockerbunker() {
  38. docker run -d --user redis \
  39. --name ${FUNCNAME[0]//_/-} \
  40. --network dockerbunker-${SERVICE_NAME} --net-alias redis \
  41. -v ${SERVICE_NAME}-redis-vol-1:${volumes[${SERVICE_NAME}-redis-vol-1]} \
  42. ${IMAGES[redis]} >/dev/null
  43. }
  44. mastodon_elasticsearch_dockerbunker() {
  45. docker run -d --user elasticsearch \
  46. --name=${FUNCNAME[0]//_/-} \
  47. --restart=unless-stopped \
  48. --network dockerbunker-${SERVICE_NAME} --net-alias=es \
  49. --env ES_JAVA_OPTS="-Xms512m -Xmx512m" \
  50. -v ${SERVICE_NAME}-elasticsearch-vol-1:${volumes[${SERVICE_NAME}-elasticsearch-vol-1]} \
  51. ${IMAGES[elasticsearch]} >/dev/null
  52. }
  53. mastodon_postgres_dockerbunker() {
  54. docker run -d --user postgres \
  55. --name=${FUNCNAME[0]//_/-} \
  56. --restart=unless-stopped \
  57. --network dockerbunker-${SERVICE_NAME} --net-alias=postgres \
  58. -v mastodon-postgres-vol-1:/var/lib/postgresql/data \
  59. ${IMAGES[postgres]} >/dev/null
  60. }
  61. mastodon_generatevapidkeys_dockerbunker() {
  62. echo -en "\n\e[1mGenerating VAPID keys\e[0m"
  63. docker run -it --rm \
  64. --name=${SERVICE_NAME}-vapidgen-dockerbunker \
  65. --env-file "${SERVICE_ENV}" \
  66. ${IMAGES[service]} rake mastodon:webpush:generate_vapid_key | grep VAPID > "${ENV_DIR}"/${SERVICE_NAME}_tmp.env
  67. exit_response
  68. }
  69. mastodon_dbmigrateandprecompileassets_dockerbunker() {
  70. echo -en "\n\e[1mCreating DB and precompiling assets\e[0m"
  71. docker run -it --rm \
  72. --name=${SERVICE_NAME}-dbsetup-dockerbunker \
  73. --network dockerbunker-${SERVICE_NAME} \
  74. --env-file "${SERVICE_ENV}" \
  75. -v ${SERVICE_NAME}-data-vol-1:${volumes[${SERVICE_NAME}-data-vol-1]} \
  76. -v ${SERVICE_NAME}-data-vol-2:${volumes[${SERVICE_NAME}-data-vol-2]} \
  77. -v ${SERVICE_NAME}-data-vol-3:${volumes[${SERVICE_NAME}-data-vol-3]} \
  78. ${IMAGES[service]} bash -c "rake db:migrate && rake assets:precompile" >/dev/null
  79. exit_response
  80. }
  81. mastodon_makeadmin_dockerbunker() {
  82. echo -en "\n\e[1mMaking ${1} admin...\e[0m"
  83. docker run -it --rm \
  84. --name=${FUNCNAME[0]//_/-} \
  85. --network dockerbunker-${SERVICE_NAME} \
  86. --env-file "${SERVICE_ENV}" \
  87. -v ${SERVICE_NAME}-data-vol-1:${volumes[${SERVICE_NAME}-data-vol-1]} \
  88. -v ${SERVICE_NAME}-data-vol-2:${volumes[${SERVICE_NAME}-data-vol-2]} \
  89. -v ${SERVICE_NAME}-data-vol-3:${volumes[${SERVICE_NAME}-data-vol-3]} \
  90. ${IMAGES[service]} bash -c "RAILS_ENV=production bin/tootctl accounts modify ${1} --role admin"
  91. exit_response
  92. }