Question

Automatically launch bash script on droplet creation?

  • Posted on May 13, 2014
  • jjk2sfuAsked by jjk2sfu

Basically, I have an image with a flask server.

When I create a new droplet from it, the flask server doesn’t run. It needs to be manually run.

How can I make the bash script to run python server.py as soon as the droplet is ready instead of me having to manually ssh in or run fabric?


Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

@asb : stop on runlevel [!12345] --> is that mean any runlevel except {1, 2, 3, 4, 5}

The best way to have something run on boot is use an init script. Assuming you are using Ubuntu, you can use Upstart to write it in a simple declarative format. A quick example might look like: <br> <br><pre> <br>description “Daemon for flask project” <br> <br>start on (local-filesystems and net-device-up IFACE=eth0) <br>stop on runlevel [!12345] <br> <br># If the process quits unexpectedly trigger a respawn <br>respawn <br> <br>setuid myuser <br>setgid mygroup <br>chdir /path/to/dir <br> <br>exec uwsgi --master
<br> --processes 4
<br> --die-on-term
<br> --socket /tmp/uwsgi.sock <br></pre> <br> <br>Save the file to “/etc/init/myservice.conf” It will now launch on boot once the filesystem is mounted and the network is active. You can also manage it like other services, using: <br> <br><pre> <br>service myservice start <br>service myservice restart <br>service myservice stop <br></pre>