我有一个Linux AMI 2 AWS示例,其中一些服务通过docker-compose编排,我使用docker-compose up或docker-compose start命令来启动它们。现在我每天都在自动启动/停止我的ec2示例,但一旦它启动,我希望运行一些ssh,以便能够切换到docker-compose. yml文件所在的目录,然后启动它。比如:
#! cd /mydirectory docker-compose start
我怎样才能做到呢?谢谢
mw3dktmi1#
我推荐使用cron,因为它很简单,大多数corn支持非标准指令,如@daily,@weekly,@monthly,@reboot。您可以将其放在shell脚本中,并在crontab中将其作为@reboot /path/to/shell/script进行调度或可以使用绝对路径指定Docker-compose文件,并在crontab中直接将其安排为@reboot docker-compose -f /path/to/docker-compose.yml start
@daily
@weekly
@monthly
@reboot
@reboot /path/to/shell/script
@reboot docker-compose -f /path/to/docker-compose.yml start
1.创建systemd服务并启用,所有启用的系统服务将在开机时启动。(难度:中等)1.将脚本放在init.d下,链接到rc*.d目录,这些脚本也是按照优先级启动的.(难度:中等)
如果您在Docker-compose文件中为容器指定了重新启动策略,则在重新启动或打开服务器时,容器将自动启动。参考
h79rfbju2#
考虑使用Amazon弹性容器服务(Amazon ECS),它可以编排Docker容器并照顾您的底层操作系统。
fjnneemd3#
只需在主机上运行以下命令一次:
sudo systemctl enable docker
然后docker-compose.yml中服务内部的restart: always应该开始工作。
restart: always
3条答案
按热度按时间mw3dktmi1#
我推荐使用cron,因为它很简单,大多数corn支持非标准指令,如
@daily
,@weekly
,@monthly
,@reboot
。您可以将其放在shell脚本中,并在crontab中将其作为
@reboot /path/to/shell/script
进行调度或
可以使用绝对路径指定Docker-compose文件,并在crontab中直接将其安排为
@reboot docker-compose -f /path/to/docker-compose.yml start
其他可能性:
1.创建systemd服务并启用,所有启用的系统服务将在开机时启动。(难度:中等)
1.将脚本放在init.d下,链接到rc*.d目录,这些脚本也是按照优先级启动的.(难度:中等)
奖金:
如果您在Docker-compose文件中为容器指定了重新启动策略,则在重新启动或打开服务器时,容器将自动启动。参考
h79rfbju2#
考虑使用Amazon弹性容器服务(Amazon ECS),它可以编排Docker容器并照顾您的底层操作系统。
fjnneemd3#
只需在主机上运行以下命令一次:
然后docker-compose.yml中服务内部的
restart: always
应该开始工作。