轻松掌握开发必会的docker套路-yaml语法与docker compose.yml
我們編程的時(shí)候常常需要定義配置文件,配置文件的格式也多種多樣,有用php的數(shù)組格式的,有xml格式的,也有json格式的。
由于docker compose使用的配置文件是docker-compose.yml ,yml后綴的文件使用的是yaml語(yǔ)法,所以我們就來(lái)聊聊yaml語(yǔ)法。
YAML語(yǔ)言就是專門來(lái)寫配置文件的語(yǔ)言,它的語(yǔ)法簡(jiǎn)潔,被很多人認(rèn)為是可以超越xml和json的文件格式。
先用一個(gè)小例子,來(lái)體驗(yàn)下!
如果我們要用配置文件存儲(chǔ)如下的數(shù)據(jù),學(xué)校名叫小學(xué),地址為上海松江小學(xué),班級(jí)分為2個(gè)班級(jí),分別是class1和class2,class1下面有小明,小紅,小花三個(gè)學(xué)生,class2下面有大明,大紅,大花三個(gè)學(xué)生。
json格式展示:
{"school": "小學(xué)","address": "上海松江小學(xué)","class": {"class1": ["小明","小紅","小花"],"class2": ["大明","大紅","大花"]} }php數(shù)組格式展示:
$school=['school'=>'小學(xué)','address'=>'上海松江小學(xué)','class'=>['class1'=>["小明","小紅","小花"],'class2'=>["大明","大紅","大花"]] ];yaml格式展示:
school: 小學(xué) address: 上海松江小學(xué) class:- class1:- 小明- 小紅- 小花- class2:- 大明- 大紅- 大花三種方式對(duì)比下,是不是覺(jué)得yaml格式寫法很簡(jiǎn)潔,字符不需要加引號(hào),也不需要用大括號(hào)來(lái)包裹數(shù)據(jù),媽媽再也不用擔(dān)心我大括號(hào)沒(méi)有閉合啦。
?
了解了yaml的基本展示形式 ,下面來(lái)說(shuō)說(shuō)yaml語(yǔ)法。
yaml語(yǔ)法特點(diǎn):
- 大小寫敏感
- 通過(guò)縮進(jìn)表示層級(jí)關(guān)系
- 禁止使用tab縮進(jìn),只能使用空格鍵
- 縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)左對(duì)齊即可
- 使用#表示注釋
yaml支持的數(shù)據(jù)結(jié)構(gòu)
- 純量:單個(gè)的、不可再分的值,包含字符串,布爾值,整數(shù),浮點(diǎn)數(shù),Null等
- 對(duì)象:鍵值對(duì)的集合
- 數(shù)組:一組按次序排列的值
純量是最基本的、不可再分的值,寫法如下:
#字符串默認(rèn)不使用引號(hào) str:這是一串文字 #如果字符串中有空格或者特殊字符需要放在引號(hào)中,且單雙引號(hào)效果一樣 newStr:'名字:張三' #整數(shù) number:12 #布爾值 isNumber: true #null值用~來(lái)表示 name:~對(duì)象是一組鍵值對(duì),寫法如下(注意字符前面的不是tab縮進(jìn),而是空格):
people:name:張三age:13address:上海數(shù)組是由一組連詞線開頭的行組成的,寫法如下(注意字符前面的不是tab縮進(jìn),而是空格):
class:-小明-小紅-小花數(shù)組和對(duì)象組合使用:
people:name:張三age:13address:上海 class:-小明-小紅-小花好了,關(guān)于yaml語(yǔ)法的常用內(nèi)容就介紹到這里,我想大家對(duì)于yaml的語(yǔ)法有了一定的了解了。
接下來(lái),我們來(lái)看看,docker compose.yml里面一些常用的配置項(xiàng)。
一份標(biāo)準(zhǔn)的docker-composer.yml文件分為三個(gè)部分,分別是version,services和networks。
version:"3" # 指定 compose 文件的版本,version 1被逐步廢棄,最新的版本用3 services: # 對(duì)象格式定義所有的 service 信息 networks: # 對(duì)象格式定義 networks 信息我們先來(lái)看看,這三個(gè)部分里面會(huì)有哪些選項(xiàng),我們以nginx為例做說(shuō)明:
#定義當(dāng)前版本 version: "3" #定義我們的服務(wù)對(duì)象 services: #自定義的服務(wù)名稱nginx: #鏡像名稱,默認(rèn)拉取本地鏡像,沒(méi)有的話從遠(yuǎn)程獲取image: nginx:1.15.7-alpine #自定義容器的名稱container_name: nginx15#將宿主機(jī)的5000端口映射到容器的80端口ports:- "5000:80"#將宿主機(jī)的./www目錄和容器的/var/www/html目錄進(jìn)行綁定,并設(shè)置rw權(quán)限#將宿主機(jī)的./conf/default.conf和容器的./conf/default.conf進(jìn)行綁定volumes:- ./www/:/var/www/html/:rw- ./conf/default.conf:/etc/nginx/conf.d/default.conf#設(shè)置環(huán)境變量,當(dāng)前的時(shí)區(qū)environment:TZ: "Asia/Shanghai"#容器是否隨docker服務(wù)啟動(dòng)重啟restart: always#容器加入名為default的網(wǎng)絡(luò)networks:- default networks: #創(chuàng)建了一個(gè)自定義的網(wǎng)絡(luò)叫做defaultdefault:好了,以上便是yaml的語(yǔ)法以及docker compose配置項(xiàng)的一些基本說(shuō)明,希望能幫助你理解docker-compose.yml文件。
總結(jié)
以上是生活随笔為你收集整理的轻松掌握开发必会的docker套路-yaml语法与docker compose.yml的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: k8s部署nginx集群
- 下一篇: 最全的搜索引擎优化(SEO)术语表