Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Start docker-compose automatically on EC2 startup

I have a linux AMI 2 AWS instance with some services orchestrated via docker-compose, and I am using docker-compose up or docker-compose start commands to start them all. Now I am in the process to start/stop my ec2 instance automatically every day, but once it is started, I want to run some ssh to be able to change to the directory where docker-compose.yml file is, and then start it.

something like:

#!
cd /mydirectory
docker-compose start

How can I achieve that?

Thanks

like image 240
fgonzalez Avatar asked Sep 10 '26 06:09

fgonzalez


2 Answers

I would recommend using cron for this as it is easy. Most of the corn supports non-standard instructions like @daily, @weekly, @monthly, @reboot.

You can put this either in a shell script and schedule that in crontab as @reboot /path/to/shell/script
or
you can specify the docker-compose file using the absolute path and directly schedule it in crontab as @reboot docker-compose -f /path/to/docker-compose.yml start

Other possibilities:

  1. Create a systemd service and enable it. All the enabled systems services will be started on powering.(difficulty: medium)
  2. Put scripts under init.d and link it to rc*.d directory. These scripts are also started based on the priority.(difficulty: medium)

Bonus:

If you specify restart policy in the docker-compose file for a container it will autostart if you reboot or switch on the server. Reference

like image 50
Mani Avatar answered Sep 11 '26 21:09

Mani


Consider using Amazon Elastic Container Service (Amazon ECS) which can orchestrate docker containers and take care of your underlying OSes.

like image 34
Ziolek Avatar answered Sep 11 '26 21:09

Ziolek



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!