1. 程式人生 > >ubuntu1604下新增自啟動項 開機啟動docker開發環境

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