run_services_with_mysql.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/bin/bash
  2. # default ports
  3. # UI API DF RD MYSQL
  4. ports=("80" "5000" "5050" "6380" "3305")
  5. # default flag for bulding docker images
  6. b=true
  7. # parse arguments
  8. args=("$@")
  9. i=0
  10. while [ $i -lt $# ]
  11. do
  12. case ${args[$i]} in
  13. "-ui")
  14. ports[0]=${args[$i+1]}
  15. ;;
  16. "-api")
  17. ports[1]=${args[$i+1]}
  18. ;;
  19. "-df")
  20. ports[2]=${args[$i+1]}
  21. ;;
  22. "-rd")
  23. ports[3]=${args[$i+1]}
  24. ;;
  25. "-mysql")
  26. ports[4]=${args[$i+1]}
  27. ;;
  28. "-b")
  29. b=false
  30. let i--
  31. ;;
  32. "stop")
  33. echo
  34. echo Stopping containers...
  35. docker stop baangt-ui baangt-api baangt-file rq-worker redis mysql
  36. exit 1
  37. ;;
  38. esac
  39. let i=$i+2
  40. done
  41. # building docker images
  42. if [ $b = true ]
  43. then
  44. # UI Service
  45. echo
  46. echo Building UI Service...
  47. docker build -t baangt-ui:latest ui
  48. # File Servise
  49. echo
  50. echo Building DataFile Service...
  51. docker build -t baangt-file:latest files
  52. # API Service
  53. echo
  54. echo Building Execution API Service...
  55. docker build -t baangt-api:latest api
  56. fi
  57. # running containers
  58. # Redis
  59. echo
  60. echo Starting Redis...
  61. docker run -d -p ${ports[3]}:6379 --name redis --rm redis:5-alpine
  62. # RQ Worker
  63. echo
  64. echo Starting Redis Worker...
  65. docker run -d --name rq-worker \
  66. -e BAANGT_DATAFILE_HOST=172.17.0.1:${ports[2]} --rm \
  67. -e DATABASE_URL=mysql+pymysql://baangt:12345@172.17.0.1:${ports[4]}/execution \
  68. -e REDIS_URL=redis://172.17.0.1:${ports[3]}/0 --entrypoint rq \
  69. baangt-api:latest worker -u redis://172.17.0.1:${ports[3]}/0 baangt-tasks
  70. # Data Files
  71. echo
  72. echo Starting Data File Service...
  73. docker run -d -p ${ports[2]}:5000 --name baangt-file --rm baangt-file:latest
  74. # UI Service
  75. echo
  76. echo Starting UI Service...
  77. docker run -d -p ${ports[0]}:5000 --name baangt-ui \
  78. -e DATABASE_URL=mysql+pymysql://baangt:12345@172.17.0.1:${ports[4]}/definition \
  79. -e BAANGT_DATAFILE_HOST=172.17.0.1:${ports[2]} \
  80. -e BAANGT_API_HOST=172.17.0.1:${ports[1]} --rm baangt-ui:latest
  81. # API Service
  82. echo
  83. echo Starting Execution API Service...
  84. docker run -d -p ${ports[1]}:5000 --name baangt-api \
  85. -e BAANGT_DATAFILE_HOST=172.17.0.1:${ports[2]} \
  86. -e DATABASE_URL=mysql+pymysql://baangt:12345@172.17.0.1:${ports[4]}/execution \
  87. -e REDIS_URL=redis://172.17.0.1:${ports[3]}/0 --rm baangt-api:latest