簡體   English   中英

Docker compose中事件的順序是什么?

[英]What is the order of events in Docker compose?

測試用例

docker-compose.yml文件:

version: '2'

services:
  custom-image:
    build: ../custom-image-folder/
    volumes:
     - /var/www/my_host_app:/usr/share/custom-service/my_app

自定義映像的Dockerfile文件:

FROM node:7.8.0-alpine
MAINTAINER DarckCrystale "xxx@xxx.xxx"

RUN ls -l /usr/share/custom-service/my_app/

CMD [ "node" ]

觀察到的行為

  • 在構建Docker compose時, RUN ls -l /usr/share/custom-service/my_app/會引發錯誤:

    步驟3/6:運行ls -l / usr / share / custom-service / my_app /

    --->在8a26523188f9中運行

    ls:/ usr / share / custom-service / my_app /:沒有這樣的文件或目錄

    錯誤 :服務“自定義節點”生成失敗:命令“ / bin / sh -c ls -l / usr / share / custom-service / my_app /”返回了非零代碼:1

  • 如果我評論RUN ls -l /usr/share/custom-service/my_app/

    • Docker構建工作
    • 命令docker exec compose_custom-image_1 ls -l /usr/share/custom-service/my_app/工作:

      -rw-rw-r-- 1節點節點3627 Mar 6 10:40 file.js

      -rw-rw-r-- 1個節點節點1194年3月28日12:54 README.md

      drwxr-xr-x 6節點節點4096 Mar 28 12:54應用

在此測試用例中,我假設Docker在構建自定義映像之后掛載了docker-compose.yml文件中描述的卷,解釋了為什么在Dockerfile中我們無法訪問它。

Docker compose的事件順序是什么? 是否有文檔解釋它?

在docker compose(通常為docker run )中,已安裝的卷(compose中的volumes和docker run中的-v )被應用於正在運行的容器。

另一方面,像RUN這樣的Dockerfile指令在構建時執行。

這就是為什么在構建第一個Dockerfile會出錯的原因。

這就是發生的情況:

$ docker build -t custom-image .
$ docker run -v /var/www/my_host_app:/usr/share/custom-service/my_app custom-image

並且compose也遵循完全相同的順序(否則是不可能的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM