Shiro
Shiro

Reputation: 7544

AWS Elastic Beanstalk delete file cache

How do I able to delete cache file? I am running Opencart in AWS Elastic Beanstalk.

When it scale to few instance, I have no idea how can I delete all cache except I have to ssh go inside do that.

Upvotes: 0

Views: 1925

Answers (1)

Marc Young
Marc Young

Reputation: 4012

you can set up a cron and a clean script using .ebextensions. We use Sidekiq for our crons (we're a ruby shop). Here's what our .ebextensions/sidekiq.conf

"/opt/elasticbeanstalk/hooks/appdeploy/pre/04_stop_sidekiq":
mode: "000777"
owner: root
group: root
content: |
  #!/bin/sh
  EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
  EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
  EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
  EB_APP_CURRENT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)
  EB_APP_PIDS_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir)

  # Setting up correct environment and ruby version so that bundle can load all gems
  source $EB_SUPPORT_DIR/envvars
  source $EB_SCRIPT_DIR/use-app-ruby.sh

  if [ -f /var/app/support/pids/sidekiq.pid ]; then
    pid=$(cat /var/app/support/pids/sidekiq.pid)
    echo "sending 'USR1' to pid $pid"
    kill -USR1 $pid || :
    rm -rf /var/app/support/pids/sidekiq.pid
    sleep 30
    kill -9 $pid || :
  fi

 "/opt/elasticbeanstalk/hooks/appdeploy/post/50_restart_sidekiq":
mode: "000777"
owner: root
group: root
content: |
  #!/bin/sh

  EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
  EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
  EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
  EB_APP_CURRENT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)
  EB_APP_PIDS_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir)

  # Setting up correct environment and ruby version so that bundle can load all gems
  source $EB_SUPPORT_DIR/envvars
  source $EB_SCRIPT_DIR/use-app-ruby.sh

  # Now we can do the actual restart of the worker. Make sure to have double quotes when using env vars in the command.
  cd $EB_APP_CURRENT_DIR

  if [ -f /var/app/support/pids/sidekiq.pid ]; then
    pid=$(cat /var/app/support/pids/sidekiq.pid)
    echo "Force Killing pid $pid"
    kill -USR1 $pid || :
    rm -rf /var/app/support/pids/sidekiq.pid
    sleep 30
    kill -9 $pid || :
  fi

  sleep 10

  su -s /bin/bash -c "bundle exec sidekiq -C /var/app/current/config/sidekiq.yml" $EB_APP_USER

  echo "done running sidekiq as daemon"

Upvotes: 1

Related Questions