[英]How to copy files inside container with docker-compose
我有一個運行 jar 文件的簡單圖像。 鏡像中的 jar 文件需要一個特殊的配置文件才能運行。
在 docker-compose.yml 的位置,我有一個名為“carrier”的文件夾,在這個文件夾下我有那個文件。
docker-compose.yml:
version: "3.3"
services:
web:
image: "myimage:1.80.0.0"
ports:
- "61003:61003"
volumes:
- ./carrier:/var/local/Config/
當我點擊docker-compose up
它抱怨文件不存在,所以它不會復制它。 如果我像在 .sh 命令中那樣執行另一個選項,則如下所示:
volumes:
- ./carrier:/var/local/Config/:shared
它抱怨另一個錯誤:
C:\Tasks\2246>docker-compose up
Removing 2246_web_1
Recreating 1fbf5d2bcea4_2246_web_1 ... error
ERROR: for 1fbf5d2bcea4_2246_web_1 Cannot start service web: path /host_mnt/c/Tasks/2246/carrier is mounted on / but it is not a shared mount
有人可以幫幫我嗎?
刪除最后一個/
volumes:
- ./carrier:/var/local/Config
如果不復制,您可以使用 Dockerfile。
Dockerfile;
FROM image
COPY files /var/local/Config/
EXPOSE 61003
Docker-compose;
version: "3.3"
services:
web:
build: . (path contains Dockerfile)
ports:
- "61003:61003"
volumes:
- ./carrier:/var/local/Config/
我不確定,但您可以嘗試將所有用戶的完全訪問權限設置為 /carrier:
chmod -R 777 /carrier
感謝大家的所有回答。 似乎最終 docker 在構建圖像時警告我對 windows 文件與 Linux 文件進行了一些比較。 (不使用 docker 撰寫,但使用 Dockerfile)。
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
在 linux 上進行了嘗試,並且可以正常工作。
使用 Dockerfile 復制文件,在下面使用;
FROM myimage:1.80.0.0
RUN mkdir -p /var/local/Config/
COPY carrier /var/local/Config/
EXPOSE 61003
docker-compose.yml
version: "3.3"
services:
web:
build:
dockerfile: Dockerfile
context: '.'
ports:
- "61003:61003"
最后,運行以下命令來構建新鏡像並啟動容器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.