ubuntu1604下新增自啟動項 開機啟動docker開發環境
阿新 • • 發佈:2019-01-07
在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