无法使用入口点Docker运行script.sh

无法使用入口点Docker运行script.sh,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有以下脚本: echo "** Creating data volume." docker volume create --name sData echo "** Build the java image that will be used to compile a Java class." docker build -t bh/java:1.0 ./Java echo "** Run the Java container to compile a Java class." docker

我有以下脚本:

echo "** Creating data volume."
docker volume create --name sData

echo "** Build the java image that will be used to compile a Java class."
docker build -t bh/java:1.0 ./Java

echo "** Run the Java container to compile a Java class."
docker run --name "java-compile" -v sData:/usr/src/data bh/java:1.0
在Java文件夹中,我有以下Dockerfile:

FROM openjdk:7 AS build-env

# Copy java file to compile and run
COPY ./Main.java /usr/src/myapp/Main.java

WORKDIR /usr/src/myapp

RUN ls -al

# Copy script.sh to root folder
COPY ./script.sh /usr/src/data/script.sh

RUN chmod 777 /usr/src/data/script.sh

ENTRYPOINT ["sh", "/usr/src/data/script.sh"]
以及script.sh文件:

#!bin/sh

# Go to myapp
cd /usr/src/myapp

#echo "Listing all files in directory - myapp"
ls -al

#echo "Compiling the java class"
javac Main.java

# Move the .class file
echo "Moving Main.class to /usr/data/Main.class"
mv /usr/src/myapp/Main.class /usr/src/data/Main.class

cd /usr/src/data

#echo "Listing all files in directory - data"
ls -al
当我如上所述运行容器时,出现以下错误:

:未找到/script.sh:2:/usr/src/data/script.sh:
's:无效选项--'
有关详细信息,请尝试“ls--help”。
:not foundta/script.sh:4:/usr/src/data/script.sh:
:not foundta/script.sh:5:/usr/src/data/script.sh:
:not foundta/script.sh:8:/usr/src/data/script.sh:
:not foundta/script.sh:11:/usr/src/data/script.sh:
:not foundta/script.sh:14:/usr/src/data/script.sh:
:not foundta/script.sh:18:/usr/src/data/script.sh:

:not foundta/script.sh:20:/usr/src/data/script.sh:

另一个问题可能是在复制命令之前放置“WORKDIR”。 因为当前目录已更改为/usr/src/myapp,并复制搜索中的文件。/
如果您的dockerfile和脚本位于同一文件夹中,您只需将其称为“COPY script.sh/usr/src/data”

script.sh
开头!bin/sh
。这里是打字错误吗?无论您在第一次docker运行时最初添加了什么
script.sh
,sData卷都将保持不变,对
script.sh
的后续更改将不会添加到您正在运行的容器中,因为sData将被装入而不是您正在添加到容器中的内容。如果您认为这可能是个问题,请尝试删除,然后重新创建您的卷。您好@Nickolay,这是因为我使用的是busybox docker映像,而不是ubuntu或其他什么。这是一个精简版。