【发布时间】:2019-10-19 14:06:40
【问题描述】:
在我的 Dockerfile 中有
FROM microsoft/dotnet:2.1-sdk
COPY devops/scripts/setup.sh .
RUN ls
RUN chmod +x ./setup.sh
RUN ./setup.sh
WORKDIR /app
第 3 步我只是用来显示该文件确实存在。
在 docker-compose 中使用时,它在 Linux 上完美运行,但在 Windows 上运行 docker-compose up 时会导致
> docker-compose up
Building create_template
Step 1/6 : FROM microsoft/dotnet:2.1-sdk
---> 511c1f563ce6
Step 2/6 : COPY devops/scripts/setup.sh .
---> 3d3bb4ab9bc4
Step 3/6 : RUN ls
---> Running in 43ad6e244ed8
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
setup.sh <---
srv
sys
tmp
usr
var
Removing intermediate container 43ad6e244ed8
---> aa32210d6a87
Step 4/6 : RUN chmod +x ./setup.sh
---> Running in 2d6858495355
Removing intermediate container 2d6858495355
---> 5e0388623851
Step 5/6 : RUN ./setup.sh
---> Running in abb3a52fe6ec
/bin/sh: 1: ./setup.sh: not found
ERROR: Service 'create_template' failed to build: The command '/bin/sh -c ./setup.sh' returned a non-zero code: 127
有没有办法在两个系统上使用相同的 dockerimage 文件和命令,或者我必须为每个系统使用备用 dockerimage 和 docker-compose? 谢谢
【问题讨论】:
-
你的
setup.sh的shebang行是什么?如果它使用的是图像中不存在的解释器(例如,您使用的是#! /bin/bash并且图像中没有 bash),您可能会收到not found错误。 -
如果您的 docker 在 Windows 10 上使用 WSL:docs.microsoft.com/en-us/windows/wsl/install-win10 运行,您可以运行 shell 脚本。否则你可以试试cygwin。不是很优雅,但它可以工作......
标签: linux windows bash docker docker-compose