通过对 docker 的介绍:https ://docs.docker.com/get-started/part2/#dockerfile )。
我正在尝试构建一个 docker 映像,有 3 个文件:
- 码头文件;
- 要求.txt
- 应用程序.py;
dockerfile 内容:
#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
COPY . /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
# Run app.py when the container launches
CMD ["python", "app.py"]
内容要求:
Flask
Redis
应用内容:
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
尝试使用命令为 Python 安装 Flask 和 Redis 库时
pip install -r requirements.txt
分发:
pip : Имя "pip" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ pip install -r requirements.txt
+ ~~~
+ CategoryInfo : ObjectNotFound: (pip:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
现在问题如下:当命令docker build --tag=friendlyhello .
.Gives错误:
无法准备上下文:无法评估 Dockerfile 路径中的符号链接:GetFileAttributesEx C:\docker\Dockerfile:系统找不到指定的文件。
关于第一个问题 - 将
pip
其安装在容器中:这是以防您的映像是在 Ubuntu 上构建的。如果不是,则应使用适当的包管理器。
检查
Dockerfile
当前目录中的内容。此外,文件应该以这种方式调用 - 使用大写字母。如果文件名称不同,您可以这样做:
您也可以尝试将完整路径写入 Dockerfile
其中 project1 是 Dockerfile 所在的文件夹