docker-compose.yml參數(shù)的用法(配置文件)
docker-compose.yml參數(shù)的用法
簡(jiǎn)單易懂
利用淳樸的配置文件風(fēng)格介紹docker-compose.yml
#系統(tǒng)變量 $PWD : 當(dāng)前目錄 #注意:YAML布爾值(true,false,yes,no,on,off)必須用引號(hào)括起來(lái),以便解析器將它們解釋為字符串。 #字典時(shí) environment: SHOW: 'true' 數(shù)組時(shí) environment: - SHOW=true
#版本號(hào) version: "2.1" # 指定創(chuàng)建的虛擬網(wǎng)絡(luò)數(shù)量 # 作用:通過(guò)不同的虛擬網(wǎng)絡(luò)實(shí)現(xiàn)了容器網(wǎng)絡(luò)之間的隔離,從而在最大程度上去保護(hù)后端網(wǎng)絡(luò)的安全。 #networks: # mynet: # driver: bridge # mynet1: # 重用的代碼模板 # 模板的定義必須以 x- 開頭 x-logging: # 以 & 開頭的字符串為模板命名 # 以 * 加上模板的名稱引用模板 &default-logging driver: json-file options: max-size: "200k" max-file: "10" # 定義全局掛載卷 volumes: test_1.thinking.com: test_2.thinking.com: # 服務(wù) services: #服務(wù)名稱 todo: # 構(gòu)建鏡像 build: # 指定dockerfile的上下文路徑(相對(duì)當(dāng)前docker-compose.yml的位置) # 包含Dockerfile文件的目錄路徑,或者是git倉(cāng)庫(kù)的URL。 # 當(dāng)提供的值是相對(duì)路徑時(shí),它被解釋為相對(duì)于當(dāng)前compose文件的位置。 # 該目錄也是發(fā)送到Docker守護(hù)程序構(gòu)建鏡像的上下文。 context: . # Dockerfile的文件名稱 dockerfile: Dockerfile-todo args: # 變量 buildno: 1 password: secret # Dockerfile里面可使用的參數(shù)變量 # Dockerfile: # ARG buildno # ARG password # RUN echo "Build number: $buildno" # RUN script-requiring-password.sh "$password" # 鏡像名 : 倉(cāng)庫(kù)/標(biāo)簽:版本 image: zhanyang/todo-demo:1.0.0 # 依賴(以指定順序啟動(dòng)) depends_on: mysql: condition: service_healthy # 指定一個(gè)自定義容器名稱,而不是生成的默認(rèn)名稱。 # 由于Docker容器名稱必須是唯一的,因此如果指定了自定義名稱,則無(wú)法將服務(wù)擴(kuò)展到多個(gè)容器。 container_name: todo # 卷掛載路徑設(shè)置。 # 可以設(shè)置宿主機(jī)路徑 (HOST:CONTAINER) 或加上訪問(wèn)模式 (HOST:CONTAINER:ro) # 掛載數(shù)據(jù)卷的默認(rèn)權(quán)限是讀寫(rw),可以通過(guò)ro指定為只讀。 volumes: # 只需指定一個(gè)路徑,讓引擎創(chuàng)建一個(gè)卷 - /var/lib/mysql # 指定絕對(duì)路徑映射 - /opt/data:/var/lib/mysql # 相對(duì)于當(dāng)前compose文件的相對(duì)路徑 - ./cache:/tmp/cache # 用戶家目錄相對(duì)路徑 - ~/configs:/etc/configs/:ro # 命名卷 - datavolume:/var/lib/mysql # 使用全局掛載卷 - test_1.thinking.com:/test:rw # 指定日志驅(qū)動(dòng)為 json-file,存儲(chǔ)日志的最大文件 size 為 200k,最多存儲(chǔ) 10 這樣大的文件。 # logging支持很多driver,而每一個(gè)driver對(duì)應(yīng)的options都不一樣 # docker inspect -f {{.HostConfig.LogConfig}} lnmp-nginx # result:{json-file map[max-file:10 max-size:2000k]} # docker info |grep 'Logging Driver' # result:Logging Driver: json-file # 其他:https://docs.docker.com/engine/admin/logging/overview/ logging: driver: "json-file" options: max-size: "200k" max-file: "10" # 指定使用的虛擬網(wǎng)絡(luò) networks: # - mynet # 覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令。 # 該命令也可以是一個(gè)類似于dockerfile的列表:command: ["bundle", "exec", "thin", "-p", "3000"] command: bundle exec thin -p 3000 # may command: ["/usr/local/nginx/sbin/nginx"] # 鏈接到另一個(gè)服務(wù)中的容器。 請(qǐng)指定服務(wù)名稱和鏈接別名(SERVICE:ALIAS),或者僅指定服務(wù)名稱。 # 實(shí)際是通過(guò)設(shè)置/etc/hosts的域名解析,從而實(shí)現(xiàn)容器間的通信。 # 故可以像在應(yīng)用中使用localhost一樣使用服務(wù)的別名鏈接其他容器的服務(wù),前提是多個(gè)服務(wù)容器在一個(gè)網(wǎng)絡(luò)中可路由聯(lián)通 # links也可以起到和depends_on相似的功能,即定義服務(wù)之間的依賴關(guān)系,從而確定服務(wù)啟動(dòng)的順序 links: - db - db:database - redis # 鏈接到docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器。參數(shù)格式跟 links 類似。 external - redis_1 - project_db_1:mysql - project_db_1:postgresql # 暴露端口,但不映射到宿主機(jī),只被連接的服務(wù)訪問(wèn)。 僅可以指定內(nèi)部端口為參數(shù) expose: - "3000" - "8000" # 暴露端口信息。使用宿主:容器 (HOST:CONTAINER)格式或者僅僅指定容器的端口(宿主將會(huì)隨機(jī)選擇端口)都可以。 ports: - "3000" - "3000-3005" - "8000:8000" - "9090-9091:8080-8081" - "49100:22" - "127.0.0.1:8001:8001" - "127.0.0.1:5000-5010:5000-5010" - "6060:6060/udp" # v3.2中ports的長(zhǎng)格式的語(yǔ)法允許配置不能用短格式表示的附加字段。 ports: - target: 80 #容器內(nèi)的端口 published: 8080 #物理主機(jī)的端口 protocol: tcp #端口協(xié)議(tcp或udp) mode: host #host 和ingress 兩總模式,host用于在每個(gè)節(jié)點(diǎn)上發(fā)布主機(jī)端口,ingress 用于被負(fù)載平衡的swarm模式端口。 # no是默認(rèn)的重啟策略,在任何情況下都不會(huì)重啟容器。 restart: "no" # 指定為always時(shí),容器總是重新啟動(dòng)。 restart: always # 如果退出代碼指示出現(xiàn)故障錯(cuò)誤,則on-failure將重新啟動(dòng)容器。 restart: on-failure restart: unless-stopped # pid 將PID模式設(shè)置為主機(jī)PID模式。 # 這就打開了容器與主機(jī)操作系統(tǒng)之間的共享PID地址空間。 # 使用此標(biāo)志啟動(dòng)的容器將能夠訪問(wèn)和操作裸機(jī)的命名空間中的其他容器,反之亦然。 # 即打開該選項(xiàng)的容器可以相互通過(guò)進(jìn)程 ID 來(lái)訪問(wèn)和操作。 pid: "host" # 配置 DNS 服務(wù)器。可以是一個(gè)值,也可以是一個(gè)列表。 dns: 8.8.8.8 dns: - 8.8.8.8 - 9.9.9.9 # 自定義搜索域 dns_search: example.com dns_search: - dc1.example.com - dc2.example.com # 覆蓋Dockerfile中的entrypoint,用法同Dockerfile中的用法 entrypoint: ["/usr/local/nginx/sbin/nginx","-g","daemon off;"] # 添加環(huán)境變量。 你可以使用數(shù)組或字典兩種形式。 # 任何布爾值; true,false,yes,no需要用引號(hào)括起來(lái),以確保它們不被YML解析器轉(zhuǎn)換為True或False。 environment: RACK_ENV: development SHOW: 'true' SESSION_SECRET: # 【注意】:如果你的服務(wù)指定了build選項(xiàng),那么在構(gòu)建過(guò)程中通過(guò)environment定義的環(huán)境變量將不會(huì)起作用。 # 將使用build的args子選項(xiàng)來(lái)定義構(gòu)建時(shí)的環(huán)境變量。 environment: - RACK_ENV=development - SHOW=true - SESSION_SECRE # 1>將定義的變量編寫在文件中,然后在yml文件中進(jìn)行添加 env_file: .env env_file: - ./common.env - ./apps/web.env - /opt/secrets.env # 2>例如: # old: db: image: mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: redhat MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress # new: db: image: mysql ports: - "3306:3306" env_file: ./mysql_env # 創(chuàng)建env_file文件在當(dāng)前目錄mysql_env MYSQL_ROOT_PASSWORD=redhat MYSQL_DATABASE=wordpress MYSQL_USER=wordpress MYSQL_PASSWORD=wordpress3 # 添加hostname映射,類似于docker cli下面的--add-host extra_hosts: - "www.hcstart.com:192.168.101.14" # 配置一個(gè)檢查去測(cè)試服務(wù)中的容器是否運(yùn)行正常 # 具體: https://docs.docker.com/engine/reference/builder/#healthcheck # 查看healthcheck的狀態(tài)輸出 : docker inspect lnmp-nginx healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 1m30s timeout: 10s retries: 3 # labels:添加元數(shù)據(jù)到container中,查看現(xiàn)有容器的labels: # docker inspect -f {{.Config.Labels}} lnmp-nginx # lnmp-nginx :容器名 labels: com.example.description: "Accounting webapp" com.example.department: "Finance" com.example.label-with-empty-value: "" labels: - "com.example.description=Accounting webapp" - "com.example.department=Finance" - "com.example.label-with-empty-value" # 在容器中設(shè)置內(nèi)核參數(shù) sysctls: net.core.somaxconn: 1024 net.ipv4.tcp_syncookies: 0 sysctls: - net.core.somaxconn=1024 - net.ipv4.tcp_syncookies=0 mysql: environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: tododb MYSQL_USER: user MYSQL_PASSWORD: pass build: context: . dockerfile: Dockerfile-mysql image: zhanyang/mysql:5.6 container_name: mysql # 以 * 加上模板的名稱引用模板 使用全局自定義模板 logging: *default-logging # 指定使用的虛擬網(wǎng)絡(luò) networks: # - mynet1
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- docker常用容器啟動(dòng)docker-compose.yml配置文件使用
- 關(guān)于immich?docker-compose.yml配置文件詳解
- 在docker-compose.yml文件中配置容器的環(huán)境變量方式
- 使用docker?compose快速配置一組容器服務(wù)詳解
- Springboot使用docker-compose實(shí)現(xiàn)動(dòng)態(tài)配置過(guò)程
- docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn)
- 詳解Docker Compose配置文件參數(shù)
- Docker compose配置文件寫法及命令使用示例
- docker-compose安裝yml文件配置方式
- docker compose 一鍵部署分布式配置中心Apollo的過(guò)程詳解
- docker-compose部署配置jenkins的詳細(xì)教程
- Docker Compose 配置指南小結(jié)
相關(guān)文章
Docker Swarm實(shí)現(xiàn)服務(wù)的滾動(dòng)更新的示例代碼
這篇文章主要介紹了Docker Swarm實(shí)現(xiàn)服務(wù)的滾動(dòng)更新的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04docker部署nginx訪問(wèn)宿主機(jī)服務(wù)并使用緩存的操作方法
這篇文章主要介紹了docker部署nginx訪問(wèn)宿主機(jī)服務(wù)并使用緩存的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧2024-04-04Docker容器處于Removal in process無(wú)法刪除問(wèn)題及解決
這篇文章主要介紹了Docker容器處于Removal in process無(wú)法刪除問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-07-07docker部署Prometheus+Cadvisor+Grafana實(shí)現(xiàn)服務(wù)器監(jiān)控
這篇文章主要為大家介紹了docker部署Prometheus+Cadvisor+Grafana實(shí)現(xiàn)服務(wù)器監(jiān)控,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11docker 創(chuàng)建RedHat8.5鏡像的命令
這篇文章主要介紹了docker 創(chuàng)建RedHat8.5鏡像的命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03Docker修改容器內(nèi)部文件的3種簡(jiǎn)單方法
docker容器化技術(shù)在打包生產(chǎn)和發(fā)布中占據(jù)著更高的地位,其高效簡(jiǎn)便很有亮點(diǎn),下面這篇文章主要給大家介紹了關(guān)于Docker修改容器內(nèi)部文件的3種簡(jiǎn)單方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05Docker下利用jenkins和docker實(shí)現(xiàn)持續(xù)交付
這篇文章主要介紹了利用jenkins和docker實(shí)現(xiàn)持續(xù)交付功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05