我有以下脚本:
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
当我如上所述运行容器时,出现以下错误:
: not foundta/script.sh: 2: /usr/src/data/script.sh:
's: invalid option -- '
Try 'ls --help' for more information.
: 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:
答案 0 :(得分:1)
另一个问题可能是" WORKDIR"在COPY命令之前。 当前目录已更改为/ usr / src / myapp并在./中复制搜索文件 如果您的dockerfile和脚本位于同一个文件夹中,您只需将其称为" COPY script.sh / usr / src / data"