如何把一个Python应用程序装进Docker( 二 )


值得注意的是 , COPY命令的第一部分是相对于构建上下文的路径 , 而不是相对于我们的本地机器的路径 。
安装requirements.txt最后一步是在Docker映像中安装我们的依赖项 。 为了实现这一点 , 我们将使用RUN命令运行pip安装:
# 3. Install our depsRUN pip install -r /src/requirements.txt需要注意的一件事是 , requirements.txt的路径与我们第一次运行pip安装时不同 。
这背后的原因是复制的文件在映像内的/src路径下 。
构建并运行Docker映像# 1. Base imageFROM python:3.8.3-slim-buster# 2. Copy filesCOPY . /src# 3. Install our depsRUN pip install -r /src/requirements.txt我们的Dockerfile现在已经完成 , 我们可以使用它来构建Docker映像 。 为此 , 我们需要使用docker构建命令:
docker build -t movie-recommender .这个命令使用当前文件夹作为构建上下文构建一个名为movie-recommender的Docker图像 。 在最后指定我们想要使用的构建上下文的路径) 。
现在我们可以使用docker run命令运行刚刚构建的图像:
docker run movie-recommender python /src/app.py该命令将在基于电影推荐图像的容器中执行python /src/app.py 。
但是 , 如果我们尝试使用curl localhost:8888连接到我们的应用程序 , 我们将会得到一个错误 。
这怎么可能?为什么我们不能连接到在容器内运行的应用程序?
原因是我们没有将应用程序的端口公开给本地机器 。 我们可以使用-p HostPort:ContainerPort标志来实现这一点 。
因此 , 让我们尝试再次运行该命令 , 这一次指定我们希望在本地公开端口8888:
docker run -p 8888:8888 movie-recommender python /src/app.py然后curl localhost:8888 。
现在的效果非常好!我们刚刚包含了一个Python应用程序!
英文原文: