[英]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 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.