ubuntu1604下添加自启动项 开机启动docker开发环境

在win7下安装的vbox虚拟机,虚拟机起了一个ubuntu1604作为宿主机,安装的docker服务

通过vbox的挂载工具将win7下的程序开发目录挂载到了ubuntu下 作为共享目录

docker安装的开发环境是 apache-php   mysql5.6  redis memcache 等 容器通过挂载共享目录实现数据在win7下持久化共享保存


需求:是开机时使docker开发环境能够自动运行 


1、 所以利用docker-compose编写docker-compose.yml将容器整体服务编排打包,使用docker-compose up -d 可以让apapche php  mysql redis等一键启动

2、原本将 docker-compose -d命令编写到一个脚本中 放到 rc.local下 用来开机启动,由于容器依赖于虚拟主机的挂载服务,貌似虚拟主机挂载win7的目录到ubuntu下的时机不太确定,导致 这个开机命令偶尔并不能成功正确的启动我需要的容器

3、因此通过update-rc.d这个命令来进行开机项管理 保证容器启动顺序是在ubuntu的网络、文件、docker等服务加载完成后再执行

4、编写developserver.sh  中包含了mount挂载win7主机目录的命令 和docker-compose启动docker服务的命令  再按照update-rc.d 启动文件的格式 编写头部启动依赖项  这样保证了该服务在这些依赖启动后再启动

在命令行下执行

update-rc.d developserver.sh defaults

以下是developserver.sh文件

#!/bin/bash

### BEGIN INIT INFO
# Provides:             developserver
# Required-Start:       $local_fs $remote_fs open-vm-tools docker
# Required-Stop:        $local_fs $remote_fs
# X-Start-Before:
# X-Stop-After:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Description:          Mount share files and start the LAMP service of docker containers
# Short-Description:    Mount share files and start the LAMP service of docker containers
### END INIT INFO
#以下就是vbox下挂载共享目录的命令
mount -t vboxsf server_data /home/xxx/vboxshare/server_data

mount -t vboxsf server_log /home/xxx/vboxshare/server_log

mount -t vboxsf share /home/xxx/vboxshare/share

mount -t vboxsf web_www /home/qiang/vboxshare/server_data/web_www
#docker-compse 一键启动docker服务 可以看到这里的 docker-compose.yml 是放在外部的一个目录 这样可以通过这个文件 就可以影响服务的编排 而不用再动启动服务
/usr/local/bin/docker-compose -f /home/xxx/vboxshare/share/docker/github_repo/docker-lamp/docker-compose.yml up -d

你可能感兴趣的:(docker,linux技术)