使用nomad部署mysql
?以下是一個mysql的nomad job文件mysql.nomad,在此文件路徑執行nomad run mysql.nomad文件名,即可
job "MySQL:5.7"{ //jobIDdatacenters=["default" ]type="service"namespace="Mars-dev"constraint{attribute="${meta.app_id}"value="2"}constraint{attribute="${meta.env}"value="dev"}meta{_time="0"}update{max_parallel=1min_healthy_time="10s"healthy_deadline="3m"auto_revert=truecanary=0}group "MySQL"{count=1restart{attempts=10interval="5m"delay="25s"mode="delay"}ephemeral_disk{migrate = truesize=300sticky = true}task "mars-dev"{driver="docker"env{MYSQL_ROOT_PASSWORD="123456" //必須設置,管理員用戶root的密碼}config{image="hub.skyinno.com/google_containers/mysql:5.7.20"force_pull=trueport_map{db = 3306}volumes = ["docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/",]}template {data = <<EOHCREATE DATABASE dbwebappdb;CREATE USER 'dbwebapp'@'%' IDENTIFIED BY 'dbwebapp';GRANT ALL PRIVILEGES ON dbwebappdb.* TO 'dbwebapp'@'%';EOHdestination = "/docker-entrypoint-initdb.d/db.sql"}logs{max_files=10max_file_size=15}resources{cpu=500memory=512network{mbits=100port "db" {}}}}} }以上版本有一個需要說明的地方:
volumes = ["docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/", ]這是mysql dockerfile里規定的路徑映射目錄,后面的template會EOH一段sql腳本,并指定destination到這個目錄下,作用就是當mysql鏡像啟動完畢后,會執行這個腳本,這里的例子是創建一個數據庫dbwebappdb,并創建用戶dbwebapp,密碼為dbwebapp,并授權。
詳情見官網說明https://hub.docker.com/_/mysql/
其實,還有一種更簡單的方式也可以創建數據庫和用戶名密碼,在模板的env里,必須設置MYSQL_ROOT_PASSWORD="123456" ,否則容器啟動報錯;同時還可以設置MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD,即初始數據庫,用戶名,密碼,而在template里就只用創建一些數據庫表等操作
env{MYSQL_ROOT_PASSWORD="123456"MYSQL_DATABASE="wordpress"MYSQL_USER="wordpress"MYSQL_PASSWORD="wordpress" }注意:mysql docker的數據文件存放有2種方式,一種是默認的,在docker容器內,由docker來管理,缺點是路徑不好找,有些數據庫管理工具可能不方便使用,而且一旦docker容器刪除,數據就丟失了;還有一種方式,通過-v,將宿主機器目錄映射到docker內部目錄,mysql數據文件存放到宿主機器目錄下,這樣數據不會丟失,設置方式如下:
volumes = ["docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/","/mysql/mars-dev:/var/lib/mysql" ]"/mysql/mars-dev:/var/lib/mysql"即將宿主機器目錄/mysql/mars-dev映射到docker內部目錄/var/lib/mysql,宿主機目錄/mysql/mars-dev如果不存在,則會自動生成;而docker內部目錄/var/lib/mysql是mysql docker提供的默認寫數據文件的目錄。
當然,如果使用了宿主目錄映射,上面的template,MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD都不會生效。
參考資料:https://hub.docker.com/_/mysql/
? ? ? ? ? ? ? ? ??https://mysqlrelease.com/2017/12/hashicorp-nomad-and-app-deployment-with-mysql/
總結
以上是生活随笔為你收集整理的使用nomad部署mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Docker中的mysql
- 下一篇: 关于Docker目录挂载的总结