iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
DevOps

從認識Docker到精通系列 第 10

第十天-docker compose-Service

  • 分享至 

  • xImage
  •  

因為docker-compose的參數項目一樣巨多,這邊先列出常用的,詳情一樣請左轉Compose specification | Docker Documentation


docker-compose.yaml,由幾個部分組成:定義容器的Service、定義網路的Network和定義永久儲存資料的Volume,因為篇幅也是挺大的,就一天講一個吧:

Service

  • Service : Service 主要是在定義應用服務啟動時,用來執行的 container 相關資訊,比如說 image 是用哪個、是不是要透過 Dockerfile 先進行編譯、要不要覆寫預設 command 或是 entrypoint、環境變數為何、port 導出與對應等等的,這些參數多半在 docker run 指令有相對應的參數。
    • image:指定container要使用哪個image
    • networks:container加入的網路,此設定需要參考最外層 networks 的設定
    • build:定義在build container時需要的資料
    • command:會overwrite image的 CMD 內容,為容器一啟動變執行的指令
    • container_name:自定義的容器名稱,須符合[a-zA-Z0-9][a-zA-Z0-9_.-]+ 正則表達式,等同於docker run --name
    • restart:當容器crash時的動作
      • restart: "no":預設行為,在任何情況皆不重啟
        • restart: always:若crash永遠會重新啟動,除非container移除
      • restart: on-failure:若exit code為錯誤則重啟
      • unless-stopped:關閉的容器會永遠關閉,除非手動再啟動
    • port:對外開放的port,等同於docker run -p
    • volumes:設定 container 要使用的volume,相同於docker run --v,此部分和networks一樣需要參考最外層 volume 的設定
    • secrets:可以使container得以存取一些機密資料(定義於外層的secret),比如簽章、證書等等
services:
 frontend:
   image: awesome/webapp
   secrets:
     - server-certificate
secrets:
 server-certificate:
   file: ./server.cert
  • env_file:指定以檔案形式描述環境變數的檔案位置
    - env_file 檔案內的形式:VAR[=[VAL]]
  • environment:一樣是指定環境變數的方式,但比env_file為優先,以下兩種都是有效的寫法
environment:
  RACK_ENV: development
  SHOW: "true"
  USER_INPUT:
environment:
  - RACK_ENV=development
  - SHOW=true
  - USER_INPUT

上一篇
第九天-docker compose -1
下一篇
第十一天-docker compose-networks
系列文
從認識Docker到精通30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言