使用Docker-compose启动容器组并设置开机启动

前言:

       基于LNMP的开发工作中往往需要使用到一组容器,包括一些服务。这里的L为CentOS7/8(Tencent OS Server也可以),Nginx,PHP,Mysql,Redis。甚至还有使用gitlab容器等用来管理代码。根据个人的使用习惯,我一般会把这些容器的创建工作做成VM或实体开发机里的1个服务,让它们开机启动。走起,步骤如下:

  1. 提前编制好容器组。形成docker-compose.yml。本文为/home/docker/docker-compose.yml这个路径。docker-compose.yml编写需要读者另行学习。
  2. 编写docker.sh脚本供myContainers.service调用。本文为/home/docker/docker.sh这个路径;这个sh脚本代码如下:
    #!/bin/bash
    
    OPS=$1
    
    OLD_IFS="$IFS"
    IFS=","
    OPSLIST=(${OPS:="restart"})
    IFS="$OLD_IFS"
    DKCMPS="/usr/local/bin/docker-compose -f /home/docker/docker-compose.yml"
    for OP in ${OPSLIST[@]}; do
    	case "$OP" in
    	start)
    		${DKCMPS} start
    		;;
    	stop)
    		${DKCMPS} stop
    		
    		;;
    	restart)
    		${DKCMPS} restart
    		;;
    	up)
    		${DKCMPS} up -d --force-recreate
    		;;
    	*)
    		echo $"${OP} bad option, Usage: {start|stop|restart|up}, split action queue with','"
    		exit 1
    		;;
    	esac
    done
  3.  给这个docker.sh脚本可执行权限: chmod +x /home/docker/docker.sh
  4. 编写系统服务文档myContainers.service。myContainers.service文档放置于/etc/systemd/system路径下。myContainers.service的代码如下:
    [Unit]
    	Description=My Container Service
    	Requires=docker.service
    	After=docker.service
    	[Service]
    	Restart=always
    	ExecStart=bash /home/docker/docker.sh start
    	ExecStop=bash /home/docker/docker.sh stop
        ExecRestart=bash /home/docker/docker.sh up
    [Install]
    	WantedBy=default.target
    

    启动创建容器组服务:systemctl start myContainers.service

  5. 设置开机启动: systemctl enable myContainers.service
    提示:当然,你也可以不需要docker.sh这个脚本,直接在myContainers.service里使用docker-compose 命令。需要修改的内容如下:

    ExecStart=/usr/local/bin/docker-compose start -f /home/docker/docker-compose.yml
    ExecStop=/usr/local/bin/docker-compose stop -f /home/docker/docker-compose.yml
    ExecRestart=/usr/local/bin/docker-compose -f /home/docker/docker-compose.yml up -d --force-recreate

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值