Taskfile.docker.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. version: "3"
  2. vars:
  3. APP_IMAGE: application
  4. CLI_IMAGE: cli
  5. NGINX_IMAGE: nginx
  6. APP_UID: 1000
  7. APP_GID: 1000
  8. USER_ENV: ={{.APP_UID}} APP_GID={{.APP_GID}}
  9. BUILD_ARG: "--build-arg APP_UID={{.APP_UID}} --build-arg APP_GID={{.APP_GID}} --build-arg $GITHUB_PROJECT_NAME=$GITHUB_PROJECT_NAME"
  10. tasks:
  11. docker-compose:
  12. internal: true
  13. cmd: APP_UID{{.USER_ENV}} docker compose {{.COMPOSE}}
  14. docker-run:
  15. aliases: [ run ]
  16. silent: true
  17. cmds:
  18. - task: docker-compose
  19. vars:
  20. COMPOSE: run --rm --no-deps development {{.COMMAND}}
  21. docker-pull:
  22. desc: Загрузить образы
  23. aliases: [ pull ]
  24. cmds:
  25. - task: docker-compose
  26. vars:
  27. COMPOSE: pull
  28. docker-build:
  29. desc: Собрать образы
  30. aliases: [ build ]
  31. cmds:
  32. - task: docker-compose
  33. vars:
  34. COMPOSE: build {{.BUILD_ARG}}
  35. docker-up:
  36. desc: Запустить контейнеры
  37. aliases: [ up ]
  38. cmds:
  39. - task: docker-compose
  40. vars:
  41. COMPOSE: up -d
  42. docker-down:
  43. desc: Остановить контейнеры
  44. aliases: [ down ]
  45. cmds:
  46. - task: docker-compose
  47. vars:
  48. COMPOSE: down
  49. docker-restart:
  50. desc: Перезапустить все контейнеры
  51. aliases: [ restart ]
  52. cmds:
  53. - task: down
  54. - task: up
  55. docker-clean:
  56. desc: Удалить volumes и кэш laravel
  57. aliases: [ clean ]
  58. cmds:
  59. - task: optimize-clear
  60. - cmd: APP_UID{{.USER_ENV}} docker compose down -v --remove-orphans
  61. docker-ps:
  62. desc: Список запущенных контейнеров
  63. aliases: [ ps ]
  64. cmds:
  65. - task: docker-compose
  66. vars:
  67. COMPOSE: ps
  68. docker-logs:
  69. desc: Просмотр лога контейнеров
  70. aliases: [ logs ]
  71. cmds:
  72. - task: docker-compose
  73. vars:
  74. COMPOSE: logs
  75. status:
  76. desc: Статус приложения
  77. internal: true
  78. cmds:
  79. - echo "Application is ready!"
  80. - echo "Backend http://laravel.localhost"
  81. - echo "Traefik http://127.0.0.1:8888"
  82. silent: true
  83. preconditions:
  84. - sh: APP_UID{{.USER_ENV}} docker compose exec application php artisan octane:status
  85. msg: 'Application container or octane is not running'
  86. build-production-*:
  87. desc: Build production
  88. vars:
  89. TAG: '{{index .MATCH 0}}'
  90. cmds:
  91. - docker build {{.BUILD_ARG}} --platform linux/x86_64 --pull -f .docker/php/Dockerfile --target php -t ghcr.io/$GITHUB_PROJECT_NAME/{{.APP_IMAGE}}:{{.TAG}} .
  92. - docker build {{.BUILD_ARG}} --platform linux/x86_64 --pull -f .docker/php/Dockerfile --target cli -t ghcr.io/$GITHUB_PROJECT_NAME/{{.CLI_IMAGE}}:{{.TAG}} .
  93. - docker build {{.BUILD_ARG}} --platform linux/x86_64 --pull -f .docker/nginx/Dockerfile -t ghcr.io/$GITHUB_PROJECT_NAME/{{.NGINX_IMAGE}}:{{.TAG}} .
  94. push-production-*:
  95. desc: Push production
  96. vars:
  97. TAG: '{{index .MATCH 0}}'
  98. cmds:
  99. - docker push ghcr.io/$GITHUB_PROJECT_NAME/{{.APP_IMAGE}}:{{.TAG}}
  100. - docker push ghcr.io/$GITHUB_PROJECT_NAME/{{.CLI_IMAGE}}:{{.TAG}}
  101. - docker push ghcr.io/$GITHUB_PROJECT_NAME/{{.NGINX_IMAGE}}:{{.TAG}}
  102. build-and-push-production-*:
  103. desc: Build & Push production
  104. vars:
  105. TAG: '{{index .MATCH 0}}'
  106. cmds:
  107. - task: build-production-{{.TAG}}
  108. - task: push-production-{{.TAG}}