我是码头工人的新手,并试图学习它。我遵循这个教程:https://docs.docker.com/get-started/part2/#apppy
所以我在Windows上安装了Docker。创建了3个文件,app.py,Dockefile和requirements.txt
我的docker文件看起来像这样
# Use an official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
CMD ["python", "app.py"]
当我在powershell中运行它时
docker build -t friendlybuild .
但结果是这样:
Error response from daemon: Dockerfile parse error line 1: unknown instruction: #
喜欢它不起作用
我不知道为什么它不起作用
我只是测试了相同,默认情况下VSCode似乎用UTF-16 LE编码保存Dockerfile。
将文件重新保存为UTF-8允许docker build无错误地运行。
解决方法是删除dockerfile并使用Notepad而不是Visual Code创建它
我的Dockerfile中有一个额外的换行符。在我阅读其中一些评论并意识到这可能是一个问题之前,我甚至没有注意到它。最初我的文件是:
FROM openjdk:8
COPY . /usr/src/Main
WORKDIR /usr/src/Main
ENTRYPOINT ["java", "-Xmx700m","-classpath", ".:./resources/:./lib/*",
"org.spark.docker.demo.DockerMultilayerPerceptronClassifier"]
我看到的错误是:
$ docker build -t docker-classifier .
Sending build context to Docker daemon 248.3MB
Error response from daemon: Dockerfile parse error line 5: unknown instruction: "ORG.SPARK.DOCKER.DEMO.DOCKERMULTILAYERPERCEPTRONCLASSIFIER"]
我花了一段时间来弄清楚,直到我阅读上面的一些评论,并查看行格式,并意识到“org.spark.docker.demo.DockerMultilayerPerceptronClassifier”]是在它自己的一行。一旦我删除换行符之前一切正常。我假设解析器会忽略它。
在运行时,在文件的开头添加一些文本。删除了在终端使用vi并正常工作的那些。
我在intellij idea中运行docker compose,通过删除docker父文件夹名称中的数字来解决这个问题。