iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

自我學習Docker的30天奇幻旅程系列 第 14

Day14 Docker Compose file指令大集(一)

  • 分享至 

  • xImage
  •  

今天開始要來學習的是Docker compose時使用的YAML file的指令介紹跟格式。
昨天雖然決定今天要來實作Dockerfile,但是發現大多都是單純命令的使用or混雜shell等的使用,而不是各情境的命令使用方式,因此在了解完之後決定改來撰寫學習了compose file指令的文章。

不過有個可以介紹的是,Dokcer官方推薦在建立時使用alpine的image,特色在於其image大小不到5MB,因為它移除了大量不必要的套件,而image容量小建置速度自然快,不過這邊也有說如果要使用Python則不建議,有興趣這邊提供連結

指令介紹

build

如名,建置時的配置。
build包含以下幾種配置

  • CONTEXT
    包含Dockerfile的路徑或是URL
build:
  context: ./dir
#   Dockerfile在當前路徑的dir資料夾裡
  • DOCKERFILE
    用來當作備用Dockerfile的路徑

  • ARGS
    如同Dockerfile的ARG可以用來當作變數使用
    首先需要在Dockerfile做參數使用的設定

ARG param

RUN echo "ARGS TEST: $param"

再來從compose file設定數值

build:
  context: ./dir
  args:
    param: 1
  • CACHE_FROM
    用來配置可以暫存的image,因此可以增加建置速度。任何image都可以
build:
  context: ./dir
  cache_from:
    - alpine:latest
# 如例cache alpine的建置,如果有重複使用image的Dockerfile就可以更快被建置

也可以在build的時候用flag使用

$ docker build --cache-from=alpine:latest -t app/test .
  • LABELS
    跟Dockerfile的LABELS同功能,標籤會被添加到之後建置完的image裡

  • NETWORK
    作為最上層的網路配置管理,透過官方提供的例子就能了解,proxy、app以及db都有使用網路配置,而上層的networks則是統一管理的概念。

version: "3"
services:
  proxy:
    build: ./proxy
    networks:
      - frontend
  app:
    build: ./app
    networks:
      - frontend
      - backend
  db:
    image: postgres
    networks:
      - backend

networks:
  frontend:
    # Use a custom driver
    driver: custom-driver-1
  backend:
    # Use a custom driver which takes special options
    driver: custom-driver-2
    driver_opts:
      foo: "1"
      bar: "2"
  • SHM_SIZE
    這裡是用來配置SHM的大小。
    先來簡單介紹SHM,/dev/shm是一種共享內存的功能,可以讓Linux的程序能夠互相傳遞數據,假設A程序創建了一部分的內存,B程序可以透過共享訪問以增加處裡速度。
    大小配置必須是字串表示的byte value或是數值
build:
  context: ./dir
  shm_size: '1024kb'
#   or
  shm_size: 10000000

  • TARGET
    這是包含在之前沒介紹的multi-stage build功能的應用,先給連結multi-stage build介紹,這邊是可以填上Dockerfile內的定義指定階段的名稱,對其進行相關配置。
build:
  context: ./dir
  target: prod

Dockerfile內的prod就像這樣

FROM golang:1.7.3 AS prod
...

FROM alpine:latest  
...
COPY --from=prod app/test .

總結:

今天學習完了實際應用Dokcerfile以及Docker compose file的build功能,看似compose file的命令有點多,明天會努力學習希望能寫到一半。

參考文獻:
docker官方文件


上一篇
Day13 Dockerfile指令大集(二)
下一篇
Day15 Docker Compose file指令大集(二)
系列文
自我學習Docker的30天奇幻旅程24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言