溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Docker的compose?ymal文件實例分析

發(fā)布時間:2022-10-26 09:21:27 來源:億速云 閱讀:134 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Docker的compose ymal文件實例分析”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

docker-compose.yml 文件

yml文件格式與json類似,采用縮進的形式來區(qū)別上下級關(guān)系,支持多種數(shù)據(jù)類型,字符,布爾,整數(shù),日期,時間等。

docker-compose.yml 文件示例如下

# yaml 配置  
version: '1.18'  
services:  
  web:  
    build: ./main.go  
    ports:  
     - "8080:8080"

默認為docker-compose.yml ,也可以使用.yaml擴展名格式也可

那么就逐行解釋一下涉及到的命令

version 這個沒什么好說的,代表的是鏡像的版本,這個跟你基于的鏡像版本一致

services 服務(wù)提供模塊,也可以認為是容器實例,可包含多個子服務(wù),可同時運行多個相同鏡像的services

web 子服務(wù)名稱,可自定義,

build 用于聲明構(gòu)建鏡像的上下文路徑,會掃描該路徑下的Dockerfile文件并構(gòu)建鏡像

所有的服務(wù)都要通過build命令或者image命令去生成指定鏡像

**ports 服務(wù)端口映射,可映射多個端口,等同于docker -p 命令 **

Dockerfile 文件解析

既然多次提到了Dockerfile這文件,那么我們也解析一下

示例如下

Dickerfile

# FROM 基于 golang:1.18-alpine
FROM golang:1.18-alpine AS builder
# ENV 設(shè)置環(huán)境變量
ENV GOPATH=/opt/repo
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.io,direct
# RUN 設(shè)置 Asia/Beijing 時區(qū)
RUN apk --no-cache add tzdata  && \
    ln -sf /usr/share/zoneinfo/Asia/Beijing /etc/localtime && \
    echo "Asia/Beijing" > /etc/timezone
# COPY 源路徑 目標路徑 從鏡像中 COPY
COPY --from=builder /opt /opt
# EXPOSE 設(shè)置端口映射
EXPOSE 8080/tcp
# WORKDIR 設(shè)置工作目錄
WORKDIR /opt
# CMD 設(shè)置啟動命令
CMD ["./main.go", "run"]

其實我的注解寫的已經(jīng)很清晰了是吧

這里補充一下copy這里,這個copy的源路徑不是宿主機的路徑,而是鏡像中的路徑,目標路徑是容器中路徑

workdir 是設(shè)置的工作目錄,但卻不是在宿主機中,而是在鏡像的每層都創(chuàng)建該工作目錄

docker build時,每當執(zhí)行run時就會創(chuàng)建新的鏡像層,只有聲明了workdir才能在創(chuàng)建新的鏡像層的時候?qū)⒃撃夸泟?chuàng)建在每一層

“Docker的compose ymal文件實例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI