日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用nomad部署mysql

發布時間:2025/3/21 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。